diff --git a/_haks/Compiler - UW2 - Haks.bat b/_haks/Compiler - UW2 - Haks.bat deleted file mode 100644 index e25f35b5..00000000 --- a/_haks/Compiler - UW2 - Haks.bat +++ /dev/null @@ -1,9 +0,0 @@ -:loop -"C:\NWN Work\nwnsc.exe" -o -w -n "C:\Games\Steam\steamapps\common\Neverwinter Nights" -i "D:\NWN Repos\UW2_PRC8\_haks\poa_exp_ability";"D:\NWN Repos\PRC8\nwn\nwnprc\trunk\include" "D:\NWN Repos\UW2_PRC8\_haks\poa_exp_ability\*.nss" -if %errorLevel% == -1 goto :loop - -:loop -"C:\NWN Work\nwnsc.exe" -o -w -n "C:\Games\Steam\steamapps\common\Neverwinter Nights" -i "D:\NWN Repos\UW2_PRC8\_haks\poa_exp_spells";"D:\NWN Repos\PRC8\nwn\nwnprc\trunk\include" "D:\NWN Repos\UW2_PRC8\_haks\poa_exp_spells\*.nss" -if %errorLevel% == -1 goto :loop - -pause \ No newline at end of file diff --git a/_haks/hakbuilder.json b/_haks/hakbuilder.json index 9a9f41de..829d2c83 100644 --- a/_haks/hakbuilder.json +++ b/_haks/hakbuilder.json @@ -1,16 +1,6 @@ { "OutputPath": "./output/", "HakList": [ - { - "Name": "poa_exp_ability", - "Path": "./poa_exp_ability/", - "CompileModels": false - }, - { - "Name": "poa_exp_spells", - "Path": "./poa_exp_spells/", - "CompileModels": false - }, { "Name": "uw2_prc8_top", "Path": "./uw2_prc8_top/", diff --git a/_haks/poa_exp_ability/PRC_vampdrain.ncs b/_haks/poa_exp_ability/PRC_vampdrain.ncs deleted file mode 100644 index a1fdffb4..00000000 Binary files a/_haks/poa_exp_ability/PRC_vampdrain.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/PRC_vampdrain.nss b/_haks/poa_exp_ability/PRC_vampdrain.nss deleted file mode 100644 index 23eab8e7..00000000 --- a/_haks/poa_exp_ability/PRC_vampdrain.nss +++ /dev/null @@ -1,151 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Vampiric Drain -//:: PRC_vampdrain.nss -//::////////////////////////////////////////////// -/* - Drain living, caster heals - Drain dead, caster dies -*/ -//::////////////////////////////////////////////// -//:: Created By: Zedium -//:: Created On: April 5, 2004 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -//------------------------------------------------------------------------------ -// GZ: gets rids of temporary hit points so that they will not stack -//------------------------------------------------------------------------------ -void PRCRemoveTempHitPoints() -{ - effect eProtection; - int nCnt = 0; - - eProtection = GetFirstEffect(OBJECT_SELF); - while (GetIsEffectValid(eProtection)) - { - if(GetEffectType(eProtection) == EFFECT_TYPE_TEMPORARY_HITPOINTS) - RemoveEffect(OBJECT_SELF, eProtection); - eProtection = GetNextEffect(OBJECT_SELF); - } -} - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY); - /* - Spellcast Hook Code - Added 2003-06-23 by GeorgZ - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - - */ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - - // End of Spell Cast Hook - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - int nMetaMagic = PRCGetMetaMagicFeat(); - - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - int nDDice = nCasterLevel /4; - if ((nDDice) == 0) - { - nDDice = 1; - } - //Damage Limit - else if (nDDice>20) - { - nDDice = 20; - } - - int nDamage = d6(nDDice); - //-------------------------------------------------------------------------- - //Enter Metamagic conditions - //-------------------------------------------------------------------------- - nDamage = PRCMaximizeOrEmpower(6,nDDice,nMetaMagic); - int nDuration = nCasterLevel/3; - - if ((nMetaMagic & METAMAGIC_EXTEND)) - { - nDuration *= 2; - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - //-------------------------------------------------------------------------- - //Limit damage to max hp + 10 - //-------------------------------------------------------------------------- - int nMax = GetCurrentHitPoints(oTarget) + 10; - if(nMax < nDamage) - { - nDamage = nMax; - } - - effect eHeal = EffectTemporaryHitpoints(nDamage/2); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eLink = EffectLinkEffects(eHeal, eDur); - effect eHurt = PRCEffectDamage(oTarget, nDamage/2); - effect eBad =EffectTemporaryHitpoints(nDamage); - effect eNegLink = EffectLinkEffects(eBad, eDur); - effect eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_NEGATIVE); - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eVisHeal = EffectVisualEffect(VFX_IMP_HEALING_M); - effect eImpact = EffectVisualEffect(VFX_FNF_LOS_EVIL_10); - float fDelay; - - nCasterLevel +=SPGetPenetr(); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation()); - //Get first target in shape - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, PRCGetSpellTargetLocation()); - while (GetIsObjectValid(oTarget)) - { - int iTombTainted = GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD; - //Check if the target is undead - if( MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD || iTombTainted || GetLocalInt(oTarget, "AcererakHealing")) - { - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eHurt, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisHeal, oTarget); - PRCRemoveTempHitPoints(); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(1)); - } - //Check if the target is hostile, and not an undead or construct - //or protected by a spell - if(!GetIsReactionTypeFriendly(oTarget) && - MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD && - !iTombTainted && - MyPRCGetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT && - !GetHasSpellEffect(SPELL_NEGATIVE_ENERGY_PROTECTION, oTarget)) - { - if(PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterLevel) == 0) - { - if(/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (PRCGetSaveDC(oTarget,OBJECT_SELF)), SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay)) - { - nDamage = nDamage/2; - - if (GetHasMettle(oTarget, SAVING_THROW_WILL)) // Ignores partial effects - { - nDamage = 0; - } - } - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget); - PRCBonusDamage(oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisHeal, OBJECT_SELF); - PRCRemoveTempHitPoints(); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, OBJECT_SELF, HoursToSeconds(1)); - } - } - //Get next target in spell area - oTarget = GetNextInPersistentObject(); - } - DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); - // Getting rid of the integer used to hold the spells spell school - } diff --git a/_haks/poa_exp_ability/inv_adeptbreath.ncs b/_haks/poa_exp_ability/inv_adeptbreath.ncs deleted file mode 100644 index 6c3ab7f7..00000000 Binary files a/_haks/poa_exp_ability/inv_adeptbreath.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/inv_adeptbreath.nss b/_haks/poa_exp_ability/inv_adeptbreath.nss deleted file mode 100644 index 6b01b71b..00000000 --- a/_haks/poa_exp_ability/inv_adeptbreath.nss +++ /dev/null @@ -1,183 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragonfire Adept Breath Effects -//:: inv_adeptbreath.nss -//:://///////////////////////////////////////////// -/* - Handles the breath effects for Dragonfire Adepts -*/ -//::////////////////////////////////////////////// -//:: Created By: Fox -//:: Created On: Jan 25, 2007 -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_inc_breath" -#include "inv_inc_invfunc" -#include "nivel_ext" -void main() -{ - object oPC = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - int nClass = GetLevelByClass(CLASS_TYPE_DRAGONFIRE_ADEPT, oPC); - //PrC arcane spellcasting levels grant damage dice and DC - nClass += GetInvocationPRCLevels(oPC); - int nDice = (nClass + 1) / 2; - int nSaveDCBonus = nClass / 2; - float fRange = nClass < 10 ? 30.0 : 60.0; - int nAlignment = GetAlignmentGoodEvil(oPC); - int nSpellID = GetSpellId(); - int nLastEffectUsed = GetLocalInt(oPC, "LastBreathEffect"); - struct breath BaseBreath; - - if(GetHitDice(oPC)>=80) - { - nDice = (nClass + 1) + (ObterNivelJogador(oPC)-80) / 2; - nSaveDCBonus = nClass + (ObterNivelJogador(oPC)-80) / 2; - fRange = nClass < 20 ? 60.0 : 90.0; - } - - if(DEBUG) DoDebug("inv_adeptbreath: range: " + FloatToString(fRange)); - - if(GetLocalInt(oPC, "AdeptTiamatLock")) - { - SendMessageToPC(oPC, "You cannot use your breath weapon again until next round"); - return; - } - - if(nLastEffectUsed == nSpellID - && nSpellID != BREATH_SHAPED_BREATH - && nSpellID != BREATH_CLOUD_BREATH - && nSpellID != BREATH_ENDURING_BREATH) - { - SendMessageToPC(oPC, "You cannot use the same breath effect two rounds in a row."); - return; - } - - switch(nSpellID) - { - case BREATH_FIRE_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, DAMAGE_TYPE_FIRE, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_FIRE_LINE: - BaseBreath = CreateBreath(oPC, TRUE, fRange * 2, DAMAGE_TYPE_FIRE, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_FROST_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, DAMAGE_TYPE_COLD, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_ELECTRIC_LINE: - BaseBreath = CreateBreath(oPC, TRUE, fRange * 2, DAMAGE_TYPE_ELECTRICAL, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_SICKENING_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, -1, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_SICKENING, 0, SAVING_THROW_FORT); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_ACID_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, DAMAGE_TYPE_ACID, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_ACID_LINE: - BaseBreath = CreateBreath(oPC, TRUE, fRange * 2, DAMAGE_TYPE_ACID, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_SHAPED_BREATH: - if(GetLocalInt(oPC, "AdeptShapedBreath")) - { - DeleteLocalInt(oPC, "AdeptShapedBreath"); - FloatingTextStringOnCreature("*Shaped Breath Removed*", oPC, FALSE); - } - else - { - SetLocalInt(oPC, "AdeptShapedBreath", TRUE); - FloatingTextStringOnCreature("*Shaped Breath Applied*", oPC, FALSE); - } break; - - case BREATH_SLOW_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, -1, 6, 2, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_SLOW, 0, SAVING_THROW_FORT); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_WEAKENING_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, -1, 6, 6, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_WEAKENING, 0, SAVING_THROW_FORT); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_CLOUD_BREATH: - if(GetLocalInt(oPC, "AdeptCloudBreath")) - { - DeleteLocalInt(oPC, "AdeptCloudBreath"); - FloatingTextStringOnCreature("*Cloud Breath Removed*", oPC, FALSE); - } - else - { - SetLocalInt(oPC, "AdeptCloudBreath", TRUE); - FloatingTextStringOnCreature("*Cloud Breath Applied*", oPC, FALSE); - } break; - - case BREATH_ENDURING_BREATH: - if(GetLocalInt(oPC, "AdeptEnduringBreath")) - { - DeleteLocalInt(oPC, "AdeptEnduringBreath"); - FloatingTextStringOnCreature("*Enduring Breath Removed*", oPC, FALSE); - } - else - { - SetLocalInt(oPC, "AdeptEnduringBreath", TRUE); - FloatingTextStringOnCreature("*Enduring Breath Applied*", oPC, FALSE); - } break; - - case BREATH_SLEEP_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, -1, 6, 1, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_SLEEP, 0, SAVING_THROW_WILL); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_THUNDER_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, DAMAGE_TYPE_SONIC, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0, SAVING_THROW_FORT); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_BAHAMUT_LINE: - //evil characters can't use this breath - if(nAlignment == ALIGNMENT_EVIL) return; - BaseBreath = CreateBreath(oPC, TRUE, fRange * 2, DAMAGE_TYPE_MAGICAL, 6, nDice * 2, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); - if(nAlignment == ALIGNMENT_GOOD) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nClass * 2, DAMAGE_TYPE_POSITIVE, DAMAGE_POWER_ENERGY), oPC); - if(nAlignment == ALIGNMENT_NEUTRAL) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nClass * 4, DAMAGE_TYPE_POSITIVE, DAMAGE_POWER_ENERGY), oPC); - break; - - case BREATH_FORCE_LINE: - BaseBreath = CreateBreath(oPC, TRUE, fRange * 2, DAMAGE_TYPE_MAGICAL, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_PARALYZE_CONE: - BaseBreath = CreateBreath(oPC, FALSE, fRange, -1, 6, 1, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_PARALYZE, 0, SAVING_THROW_FORT); - ApplyBreath(BaseBreath, lTarget); break; - - case BREATH_FIVEFOLD_TIAMAT: - //good characters can't use this breath - if(nAlignment == ALIGNMENT_GOOD) return; - BaseBreath = CreateBreath(oPC, TRUE, fRange * 2, DAMAGE_TYPE_ACID, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); - BaseBreath = CreateBreath(oPC, TRUE, fRange * 2, DAMAGE_TYPE_ELECTRICAL, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); - BaseBreath = CreateBreath(oPC, FALSE, fRange, DAMAGE_TYPE_ACID, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); - BaseBreath = CreateBreath(oPC, FALSE, fRange, DAMAGE_TYPE_COLD, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); - BaseBreath = CreateBreath(oPC, FALSE, fRange, DAMAGE_TYPE_FIRE, 6, nDice, ABILITY_CONSTITUTION, nSaveDCBonus, BREATH_NORMAL, 0); - ApplyBreath(BaseBreath, lTarget); - if(nAlignment == ALIGNMENT_EVIL) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nClass * 2, DAMAGE_TYPE_POSITIVE, DAMAGE_POWER_ENERGY), oPC); - if(nAlignment == ALIGNMENT_NEUTRAL) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nClass * 4, DAMAGE_TYPE_POSITIVE, DAMAGE_POWER_ENERGY), oPC); - SetLocalInt(oPC, "AdeptTiamatLock", TRUE); - DelayCommand(6.0, DeleteLocalInt(oPC, "AdeptTiamatLock")); - break; - } - - //Mark the breath effect as used. - if(nSpellID != BREATH_SHAPED_BREATH - && nSpellID != BREATH_CLOUD_BREATH - && nSpellID != BREATH_ENDURING_BREATH) - { - SetLocalInt(oPC, "LastBreathEffect", nSpellID); - DelayCommand(6.0, DeleteLocalInt(oPC, "LastBreathEffect")); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/inv_drgnfireadpt.ncs b/_haks/poa_exp_ability/inv_drgnfireadpt.ncs deleted file mode 100644 index b74e4af9..00000000 Binary files a/_haks/poa_exp_ability/inv_drgnfireadpt.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/inv_drgnfireadpt.nss b/_haks/poa_exp_ability/inv_drgnfireadpt.nss deleted file mode 100644 index 55b57da7..00000000 --- a/_haks/poa_exp_ability/inv_drgnfireadpt.nss +++ /dev/null @@ -1,41 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragonfire Adept -//:: inv_drgnfireadpt.nss -//:://///////////////////////////////////////////// -/* - Handles the passive bonuses for Dragonfire Adepts -*/ -//::////////////////////////////////////////////// -//:: Created By: Fox -//:: Created On: Jan 24, 2007 -//::////////////////////////////////////////////// - -#include "prc_class_const" -#include "inc_item_props" -#include "inv_inc_invfunc" -void main() -{ - int nClass = GetLevelByClass(CLASS_TYPE_DRAGONFIRE_ADEPT); - nClass += GetInvocationPRCLevels(OBJECT_SELF); - int nScales = (nClass + 8) / 5; - if(nScales > 1) - SetCompositeBonus(GetPCSkin(OBJECT_SELF), "DFA_AC", nScales, ITEM_PROPERTY_AC_BONUS); - - //Reduction - if(nClass > 5) - { - effect eReduction; - if(nClass > 95) eReduction = EffectDamageReduction(25, DAMAGE_POWER_PLUS_TWENTY); - else if(nClass > 85) eReduction = EffectDamageReduction(22, DAMAGE_POWER_PLUS_TWENTY); - else if(nClass > 75) eReduction = EffectDamageReduction(20, DAMAGE_POWER_PLUS_FIFTEEN); - else if(nClass > 65) eReduction = EffectDamageReduction(17, DAMAGE_POWER_PLUS_FIFTEEN); - else if(nClass > 55) eReduction = EffectDamageReduction(15, DAMAGE_POWER_PLUS_TEN); - else if(nClass > 45) eReduction = EffectDamageReduction(12, DAMAGE_POWER_PLUS_TEN); - else if(nClass > 35) eReduction = EffectDamageReduction(10, DAMAGE_POWER_PLUS_FIVE); - else if(nClass > 25) eReduction = EffectDamageReduction(7, DAMAGE_POWER_PLUS_FIVE); - else if(nClass > 15) eReduction = EffectDamageReduction(5, DAMAGE_POWER_PLUS_ONE); - else eReduction = EffectDamageReduction(2, DAMAGE_POWER_PLUS_ONE); - - ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(eReduction), OBJECT_SELF); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nivel_ext.nss b/_haks/poa_exp_ability/nivel_ext.nss deleted file mode 100644 index 87a32719..00000000 --- a/_haks/poa_exp_ability/nivel_ext.nss +++ /dev/null @@ -1,1180 +0,0 @@ -/****************************************************************************** - * Script de Extensao para Calculo de Niveis (de Jogador e Itens) * - * Versão: 2.0 * - ****************************************************************************** - - ******************************************************************************/ - -//****************************************************************************** -// Declaracoes de Constantes Globais -//****************************************************************************** - -// Nivel maximo permitido no servidor. Nao e recomendado valores superiores a 120 -const int NIVEL_MAXIMO_PERMITIDO = 1000; //1000 - -//****************************************************************************** -// Assinaturas de Procedimentos, Funcoes e Metodos -//****************************************************************************** - -// Retorna quanto de experiencia e necessaria para se ter determinado nivel. -int ObterExperienciaNivel(int iNivel); - -// Retorna quanto de nivel se tem com determinada esperiencia. -int ObterNivelExperiencia(int iExperiencia); - -// Retorna o nivel real de determinado jogador a partir de sua experiencia. -int ObterNivelJogador(object oJogador); - -// Retorna o nivel de determinada criatura, obtida a partir das variaveis do jogo. -int ObterNivelCriatura(object oCriatura); - -// Converte iPreco do item em nivel necessario para utiliza-lo. -int ConverterPrecoNivelItem(int iPreco); - -// Retorna o nivel necessario para utilizar determinado item. -int ObterNivelItem(object oItem); - -// Retorna a experiencia necessaria para utilizar determinado item. -int ObterExperienciaItem(object oItem); - - -//****************************************************************************** -// Implementacao de Procedimentos, Funcoes e Metodos -//****************************************************************************** - -//****************************************************************************** -int ObterExperienciaNivel(int iNivel) -{ - int iContador; - int iXP = 0; - - for (iContador = 1;iContador <= iNivel;iContador++) - { - iXP += ((iContador - 1) * 1000); - } - - return iXP; -} -//****************************************************************************** - -//****************************************************************************** -int ObterNivelExperiencia(int iExperiencia) -{ - int iXPAtual = iExperiencia; - int iContadorNivel = 1; - int iXPProximoNivel = 1000; - - while (iXPAtual >= iXPProximoNivel) - { - iContadorNivel++; - iXPAtual = iXPAtual - iXPProximoNivel; - iXPProximoNivel = iXPProximoNivel + 1000; - } - - return iContadorNivel; -} -//****************************************************************************** - -//****************************************************************************** -int ObterNivelJogador(object oJogador) -{ - return ObterNivelExperiencia(GetXP(oJogador)); -} -//****************************************************************************** - -//****************************************************************************** -int ObterNivelCriatura(object oCriatura) -{ - return - ( - GetLevelByPosition(1,oCriatura) + - GetLevelByPosition(2,oCriatura) + - GetLevelByPosition(3,oCriatura) + - GetLevelByPosition(4,oCriatura) + - GetLevelByPosition(5,oCriatura) + - GetLevelByPosition(6,oCriatura) + - GetLevelByPosition(7,oCriatura) + - GetLevelByPosition(8,oCriatura) - ); -} -//atualizada abaixo: - /* -int ObterNivelCriatura(object oCriatura) -{ - int iNivel = FloatToInt( GetChallengeRating( oCriatura ) + 0.5 ); - if ( iNivel < 1 ) { iNivel = 1; } - return iNivel; -} */ -//****************************************************************************** - -//****************************************************************************** -int ConverterPrecoNivelItem(int iPreco) -{ - if (iPreco <= 1000) { return 1; } - else if (iPreco <= 3400) { return 2; } - else if (iPreco <= 7400) { return 3; } - else if (iPreco <= 13000) { return 4; } - else if (iPreco <= 20200) { return 5; } - else if (iPreco <= 29000) { return 6; } - else if (iPreco <= 39400) { return 7; } - else if (iPreco <= 51400) { return 8; } - else if (iPreco <= 65000) { return 9; } - else if (iPreco <= 80200) { return 10; } - else if (iPreco <= 97000) { return 11; } - else if (iPreco <= 115400) { return 12; } - else if (iPreco <= 135400) { return 13; } - else if (iPreco <= 157000) { return 14; } - else if (iPreco <= 180200) { return 15; } - else if (iPreco <= 205000) { return 16; } - else if (iPreco <= 231400) { return 17; } - else if (iPreco <= 259400) { return 18; } - else if (iPreco <= 289000) { return 19; } - else if (iPreco <= 320200) { return 20; } - else if (iPreco <= 353000) { return 21; } - else if (iPreco <= 387400) { return 22; } - else if (iPreco <= 423400) { return 23; } - else if (iPreco <= 461000) { return 24; } - else if (iPreco <= 500200) { return 25; } - else if (iPreco <= 541000) { return 26; } - else if (iPreco <= 583400) { return 27; } - else if (iPreco <= 627400) { return 28; } - else if (iPreco <= 673000) { return 29; } - else if (iPreco <= 720200) { return 30; } - else if (iPreco <= 769000) { return 31; } - else if (iPreco <= 819400) { return 32; } - else if (iPreco <= 871400) { return 33; } - else if (iPreco <= 925000) { return 34; } - else if (iPreco <= 980200) { return 35; } - else if (iPreco <= 1037000) { return 36; } - else if (iPreco <= 1095400) { return 37; } - else if (iPreco <= 1155400) { return 38; } - else if (iPreco <= 1217000) { return 39; } - else if (iPreco <= 1280200) { return 40; } - else if (iPreco <= 1345000) { return 41; } - else if (iPreco <= 1411400) { return 42; } - else if (iPreco <= 1479400) { return 43; } - else if (iPreco <= 1549000) { return 44; } - else if (iPreco <= 1620200) { return 45; } - else if (iPreco <= 1693000) { return 46; } - else if (iPreco <= 1767400) { return 47; } - else if (iPreco <= 1843400) { return 48; } - else if (iPreco <= 1921000) { return 49; } - else if (iPreco <= 2000200) { return 50; } - else if (iPreco <= 2081000) { return 51; } - else if (iPreco <= 2163400) { return 52; } - else if (iPreco <= 2247400) { return 53; } - else if (iPreco <= 2333000) { return 54; } - else if (iPreco <= 2420200) { return 55; } - else if (iPreco <= 2509000) { return 56; } - else if (iPreco <= 2599400) { return 57; } - else if (iPreco <= 2691400) { return 58; } - else if (iPreco <= 2785000) { return 59; } - else if (iPreco <= 2880200) { return 60; } - else if (iPreco <= 2977000) { return 61; } - else if (iPreco <= 3075400) { return 62; } - else if (iPreco <= 3175400) { return 63; } - else if (iPreco <= 3277000) { return 64; } - else if (iPreco <= 3380200) { return 65; } - else if (iPreco <= 3485000) { return 66; } - else if (iPreco <= 3591400) { return 67; } - else if (iPreco <= 3699400) { return 68; } - else if (iPreco <= 3809000) { return 69; } - else if (iPreco <= 3920200) { return 70; } - else if (iPreco <= 4033000) { return 71; } - else if (iPreco <= 4147400) { return 72; } - else if (iPreco <= 4263400) { return 73; } - else if (iPreco <= 4381000) { return 74; } - else if (iPreco <= 4500200) { return 75; } - else if (iPreco <= 4621000) { return 76; } - else if (iPreco <= 4743400) { return 77; } - else if (iPreco <= 4867400) { return 78; } - else if (iPreco <= 4993000) { return 79; } - else if (iPreco <= 5120200) { return 80; } - else if (iPreco <= 5249000) { return 81; } - else if (iPreco <= 5379400) { return 82; } - else if (iPreco <= 5511400) { return 83; } - else if (iPreco <= 5645000) { return 84; } - else if (iPreco <= 5780200) { return 85; } - else if (iPreco <= 5917000) { return 86; } - else if (iPreco <= 6055400) { return 87; } - else if (iPreco <= 6195400) { return 88; } - else if (iPreco <= 6337000) { return 89; } - else if (iPreco <= 6480200) { return 90; } - else if (iPreco <= 6625000) { return 91; } - else if (iPreco <= 6771400) { return 92; } - else if (iPreco <= 6919400) { return 93; } - else if (iPreco <= 7069000) { return 94; } - else if (iPreco <= 7220200) { return 95; } - else if (iPreco <= 7373000) { return 96; } - else if (iPreco <= 7527400) { return 97; } - else if (iPreco <= 7683400) { return 98; } - else if (iPreco <= 7841000) { return 99; } - else if (iPreco <= 8000200) { return 100; } - else if (iPreco <= 8161000) { return 101; } - else if (iPreco <= 8323400) { return 102; } - else if (iPreco <= 8487400) { return 103; } - else if (iPreco <= 8653000) { return 104; } - else if (iPreco <= 8820200) { return 105; } - else if (iPreco <= 8989000) { return 106; } - else if (iPreco <= 9159400) { return 107; } - else if (iPreco <= 9331400) { return 108; } - else if (iPreco <= 9505000) { return 109; } - else if (iPreco <= 9680200) { return 110; } - else if (iPreco <= 9857000) { return 111; } - else if (iPreco <= 10035400) { return 112; } - else if (iPreco <= 10215400) { return 113; } - else if (iPreco <= 10397000) { return 114; } - else if (iPreco <= 10580200) { return 115; } - else if (iPreco <= 10765000) { return 116; } - else if (iPreco <= 10951400) { return 117; } - else if (iPreco <= 11139400) { return 118; } - else if (iPreco <= 11329000) { return 119; } - else if (iPreco <= 11520200) { return 120; } - else if (iPreco <= 11713000) { return 121; } - else if (iPreco <= 11907400) { return 122; } - else if (iPreco <= 12103400) { return 123; } - else if (iPreco <= 12301000) { return 124; } - else if (iPreco <= 12500200) { return 125; } - else if (iPreco <= 12701000) { return 126; } - else if (iPreco <= 12903400) { return 127; } - else if (iPreco <= 13107400) { return 128; } - else if (iPreco <= 13313000) { return 129; } - else if (iPreco <= 13520200) { return 130; } - else if (iPreco <= 13729000) { return 131; } - else if (iPreco <= 13939400) { return 132; } - else if (iPreco <= 14151400) { return 133; } - else if (iPreco <= 14365000) { return 134; } - else if (iPreco <= 14580200) { return 135; } - else if (iPreco <= 14797000) { return 136; } - else if (iPreco <= 15015400) { return 137; } - else if (iPreco <= 15235400) { return 138; } - else if (iPreco <= 15457000) { return 139; } - else if (iPreco <= 15680200) { return 140; } - else if (iPreco <= 15905000) { return 141; } - else if (iPreco <= 16131400) { return 142; } - else if (iPreco <= 16359400) { return 143; } - else if (iPreco <= 16589000) { return 144; } - else if (iPreco <= 16820200) { return 145; } - else if (iPreco <= 17053000) { return 146; } - else if (iPreco <= 17287400) { return 147; } - else if (iPreco <= 17523400) { return 148; } - else if (iPreco <= 17761000) { return 149; } - else if (iPreco <= 18000200) { return 150; } - else if (iPreco <= 18241000) { return 151; } - else if (iPreco <= 18483400) { return 152; } - else if (iPreco <= 18727400) { return 153; } - else if (iPreco <= 18973000) { return 154; } - else if (iPreco <= 19220200) { return 155; } - else if (iPreco <= 19469000) { return 156; } - else if (iPreco <= 19719400) { return 157; } - else if (iPreco <= 19971400) { return 158; } - else if (iPreco <= 20225000) { return 159; } - else if (iPreco <= 20480200) { return 160; } - else if (iPreco <= 20737000) { return 161; } - else if (iPreco <= 20995400) { return 162; } - else if (iPreco <= 21255400) { return 163; } - else if (iPreco <= 21517000) { return 164; } - else if (iPreco <= 21780200) { return 165; } - else if (iPreco <= 22045000) { return 166; } - else if (iPreco <= 22311400) { return 167; } - else if (iPreco <= 22579400) { return 168; } - else if (iPreco <= 22849000) { return 169; } - else if (iPreco <= 23120200) { return 170; } - else if (iPreco <= 23393000) { return 171; } - else if (iPreco <= 23667400) { return 172; } - else if (iPreco <= 23943400) { return 173; } - else if (iPreco <= 24221000) { return 174; } - else if (iPreco <= 24500200) { return 175; } - else if (iPreco <= 24781000) { return 176; } - else if (iPreco <= 25063400) { return 177; } - else if (iPreco <= 25347400) { return 178; } - else if (iPreco <= 25633000) { return 179; } - else if (iPreco <= 25920200) { return 180; } - else if (iPreco <= 26209000) { return 181; } - else if (iPreco <= 26499400) { return 182; } - else if (iPreco <= 26791400) { return 183; } - else if (iPreco <= 27085000) { return 184; } - else if (iPreco <= 27380200) { return 185; } - else if (iPreco <= 27677000) { return 186; } - else if (iPreco <= 27975400) { return 187; } - else if (iPreco <= 28275400) { return 188; } - else if (iPreco <= 28577000) { return 189; } - else if (iPreco <= 28880200) { return 190; } - else if (iPreco <= 29185000) { return 191; } - else if (iPreco <= 29491400) { return 192; } - else if (iPreco <= 29799400) { return 193; } - else if (iPreco <= 30109000) { return 194; } - else if (iPreco <= 30420200) { return 195; } - else if (iPreco <= 30733000) { return 196; } - else if (iPreco <= 31047400) { return 197; } - else if (iPreco <= 31363400) { return 198; } - else if (iPreco <= 31681000) { return 199; } - else if (iPreco <= 32000200) { return 200; } - else if (iPreco <= 32321000) { return 201; } - else if (iPreco <= 32643400) { return 202; } - else if (iPreco <= 32967400) { return 203; } - else if (iPreco <= 33293000) { return 204; } - else if (iPreco <= 33620200) { return 205; } - else if (iPreco <= 33949000) { return 206; } - else if (iPreco <= 34279400) { return 207; } - else if (iPreco <= 34611400) { return 208; } - else if (iPreco <= 34945000) { return 209; } - else if (iPreco <= 35280200) { return 210; } - else if (iPreco <= 35617000) { return 211; } - else if (iPreco <= 35955400) { return 212; } - else if (iPreco <= 36295400) { return 213; } - else if (iPreco <= 36637000) { return 214; } - else if (iPreco <= 36980200) { return 215; } - else if (iPreco <= 37325000) { return 216; } - else if (iPreco <= 37671400) { return 217; } - else if (iPreco <= 38019400) { return 218; } - else if (iPreco <= 38369000) { return 219; } - else if (iPreco <= 38720200) { return 220; } - else if (iPreco <= 39073000) { return 221; } - else if (iPreco <= 39427400) { return 222; } - else if (iPreco <= 39783400) { return 223; } - else if (iPreco <= 40141000) { return 224; } - else if (iPreco <= 40500200) { return 225; } - else if (iPreco <= 40861000) { return 226; } - else if (iPreco <= 41223400) { return 227; } - else if (iPreco <= 41587400) { return 228; } - else if (iPreco <= 41953000) { return 229; } - else if (iPreco <= 42320200) { return 230; } - else if (iPreco <= 42689000) { return 231; } - else if (iPreco <= 43059400) { return 232; } - else if (iPreco <= 43431400) { return 233; } - else if (iPreco <= 43805000) { return 234; } - else if (iPreco <= 44180200) { return 235; } - else if (iPreco <= 44557000) { return 236; } - else if (iPreco <= 44935400) { return 237; } - else if (iPreco <= 45315400) { return 238; } - else if (iPreco <= 45697000) { return 239; } - else if (iPreco <= 46080200) { return 240; } - else if (iPreco <= 46465000) { return 241; } - else if (iPreco <= 46851400) { return 242; } - else if (iPreco <= 47239400) { return 243; } - else if (iPreco <= 47629000) { return 244; } - else if (iPreco <= 48020200) { return 245; } - else if (iPreco <= 48413000) { return 246; } - else if (iPreco <= 48807400) { return 247; } - else if (iPreco <= 49203400) { return 248; } - else if (iPreco <= 49601000) { return 249; } - else if (iPreco <= 50000200) { return 250; } - else if (iPreco <= 50401000) { return 251; } - else if (iPreco <= 50803400) { return 252; } - else if (iPreco <= 51207400) { return 253; } - else if (iPreco <= 51613000) { return 254; } - else if (iPreco <= 52020200) { return 255; } - else if (iPreco <= 52429000) { return 256; } - else if (iPreco <= 52839400) { return 257; } - else if (iPreco <= 53251400) { return 258; } - else if (iPreco <= 53665000) { return 259; } - else if (iPreco <= 54080200) { return 260; } - else if (iPreco <= 54497000) { return 261; } - else if (iPreco <= 54915400) { return 262; } - else if (iPreco <= 55335400) { return 263; } - else if (iPreco <= 55757000) { return 264; } - else if (iPreco <= 56180200) { return 265; } - else if (iPreco <= 56605000) { return 266; } - else if (iPreco <= 57031400) { return 267; } - else if (iPreco <= 57459400) { return 268; } - else if (iPreco <= 57889000) { return 269; } - else if (iPreco <= 58320200) { return 270; } - else if (iPreco <= 58753000) { return 271; } - else if (iPreco <= 59187400) { return 272; } - else if (iPreco <= 59623400) { return 273; } - else if (iPreco <= 60061000) { return 274; } - else if (iPreco <= 60500200) { return 275; } - else if (iPreco <= 60941000) { return 276; } - else if (iPreco <= 61383400) { return 277; } - else if (iPreco <= 61827400) { return 278; } - else if (iPreco <= 62273000) { return 279; } - else if (iPreco <= 62720200) { return 280; } - else if (iPreco <= 63169000) { return 281; } - else if (iPreco <= 63619400) { return 282; } - else if (iPreco <= 64071400) { return 283; } - else if (iPreco <= 64525000) { return 284; } - else if (iPreco <= 64980200) { return 285; } - else if (iPreco <= 65437000) { return 286; } - else if (iPreco <= 65895400) { return 287; } - else if (iPreco <= 66355400) { return 288; } - else if (iPreco <= 66817000) { return 289; } - else if (iPreco <= 67280200) { return 290; } - else if (iPreco <= 67745000) { return 291; } - else if (iPreco <= 68211400) { return 292; } - else if (iPreco <= 68679400) { return 293; } - else if (iPreco <= 69149000) { return 294; } - else if (iPreco <= 69620200) { return 295; } - else if (iPreco <= 70093000) { return 296; } - else if (iPreco <= 70567400) { return 297; } - else if (iPreco <= 71043400) { return 298; } - else if (iPreco <= 71521000) { return 299; } - else if (iPreco <= 72000200) { return 300; } - else if (iPreco <= 72481000) { return 301; } - else if (iPreco <= 72963400) { return 302; } - else if (iPreco <= 73447400) { return 303; } - else if (iPreco <= 73933000) { return 304; } - else if (iPreco <= 74420200) { return 305; } - else if (iPreco <= 74909000) { return 306; } - else if (iPreco <= 75399400) { return 307; } - else if (iPreco <= 75891400) { return 308; } - else if (iPreco <= 76385000) { return 309; } - else if (iPreco <= 76880200) { return 310; } - else if (iPreco <= 77377000) { return 311; } - else if (iPreco <= 77875400) { return 312; } - else if (iPreco <= 78375400) { return 313; } - else if (iPreco <= 78877000) { return 314; } - else if (iPreco <= 79380200) { return 315; } - else if (iPreco <= 79885000) { return 316; } - else if (iPreco <= 80391400) { return 317; } - else if (iPreco <= 80899400) { return 318; } - else if (iPreco <= 81409000) { return 319; } - else if (iPreco <= 81920200) { return 320; } - else if (iPreco <= 82433000) { return 321; } - else if (iPreco <= 82947400) { return 322; } - else if (iPreco <= 83463400) { return 323; } - else if (iPreco <= 83981000) { return 324; } - else if (iPreco <= 84500200) { return 325; } - else if (iPreco <= 85021000) { return 326; } - else if (iPreco <= 85543400) { return 327; } - else if (iPreco <= 86067400) { return 328; } - else if (iPreco <= 86593000) { return 329; } - else if (iPreco <= 87120200) { return 330; } - else if (iPreco <= 87649000) { return 331; } - else if (iPreco <= 88179400) { return 332; } - else if (iPreco <= 88711400) { return 333; } - else if (iPreco <= 89245000) { return 334; } - else if (iPreco <= 89780200) { return 335; } - else if (iPreco <= 90317000) { return 336; } - else if (iPreco <= 90855400) { return 337; } - else if (iPreco <= 91395400) { return 338; } - else if (iPreco <= 91937000) { return 339; } - else if (iPreco <= 92480200) { return 340; } - else if (iPreco <= 93025000) { return 341; } - else if (iPreco <= 93571400) { return 342; } - else if (iPreco <= 94119400) { return 343; } - else if (iPreco <= 94669000) { return 344; } - else if (iPreco <= 95220200) { return 345; } - else if (iPreco <= 95773000) { return 346; } - else if (iPreco <= 96327400) { return 347; } - else if (iPreco <= 96883400) { return 348; } - else if (iPreco <= 97441000) { return 349; } - else if (iPreco <= 98000200) { return 350; } - else if (iPreco <= 98561000) { return 351; } - else if (iPreco <= 99123400) { return 352; } - else if (iPreco <= 99687400) { return 353; } - else if (iPreco <= 100253000) { return 354; } - else if (iPreco <= 100820200) { return 355; } - else if (iPreco <= 101389000) { return 356; } - else if (iPreco <= 101959400) { return 357; } - else if (iPreco <= 102531400) { return 358; } - else if (iPreco <= 103105000) { return 359; } - else if (iPreco <= 103680200) { return 360; } - else if (iPreco <= 104257000) { return 361; } - else if (iPreco <= 104835400) { return 362; } - else if (iPreco <= 105415400) { return 363; } - else if (iPreco <= 105997000) { return 364; } - else if (iPreco <= 106580200) { return 365; } - else if (iPreco <= 107165000) { return 366; } - else if (iPreco <= 107751400) { return 367; } - else if (iPreco <= 108339400) { return 368; } - else if (iPreco <= 108929000) { return 369; } - else if (iPreco <= 109520200) { return 370; } - else if (iPreco <= 110113000) { return 371; } - else if (iPreco <= 110707400) { return 372; } - else if (iPreco <= 111303400) { return 373; } - else if (iPreco <= 111901000) { return 374; } - else if (iPreco <= 112500200) { return 375; } - else if (iPreco <= 113101000) { return 376; } - else if (iPreco <= 113703400) { return 377; } - else if (iPreco <= 114307400) { return 378; } - else if (iPreco <= 114913000) { return 379; } - else if (iPreco <= 115520200) { return 380; } - else if (iPreco <= 116129000) { return 381; } - else if (iPreco <= 116739400) { return 382; } - else if (iPreco <= 117351400) { return 383; } - else if (iPreco <= 117965000) { return 384; } - else if (iPreco <= 118580200) { return 385; } - else if (iPreco <= 119197000) { return 386; } - else if (iPreco <= 119815400) { return 387; } - else if (iPreco <= 120435400) { return 388; } - else if (iPreco <= 121057000) { return 389; } - else if (iPreco <= 121680200) { return 390; } - else if (iPreco <= 122305000) { return 391; } - else if (iPreco <= 122931400) { return 392; } - else if (iPreco <= 123559400) { return 393; } - else if (iPreco <= 124189000) { return 394; } - else if (iPreco <= 124820200) { return 395; } - else if (iPreco <= 125453000) { return 396; } - else if (iPreco <= 126087400) { return 397; } - else if (iPreco <= 126723400) { return 398; } - else if (iPreco <= 127361000) { return 399; } - else if (iPreco <= 128000200) { return 400; } - else if (iPreco <= 128641000) { return 401; } - else if (iPreco <= 129283400) { return 402; } - else if (iPreco <= 129927400) { return 403; } - else if (iPreco <= 130573000) { return 404; } - else if (iPreco <= 131220200) { return 405; } - else if (iPreco <= 131869000) { return 406; } - else if (iPreco <= 132519400) { return 407; } - else if (iPreco <= 133171400) { return 408; } - else if (iPreco <= 133825000) { return 409; } - else if (iPreco <= 134480200) { return 410; } - else if (iPreco <= 135137000) { return 411; } - else if (iPreco <= 135795400) { return 412; } - else if (iPreco <= 136455400) { return 413; } - else if (iPreco <= 137117000) { return 414; } - else if (iPreco <= 137780200) { return 415; } - else if (iPreco <= 138445000) { return 416; } - else if (iPreco <= 139111400) { return 417; } - else if (iPreco <= 139779400) { return 418; } - else if (iPreco <= 140449000) { return 419; } - else if (iPreco <= 141120200) { return 420; } - else if (iPreco <= 141793000) { return 421; } - else if (iPreco <= 142467400) { return 422; } - else if (iPreco <= 143143400) { return 423; } - else if (iPreco <= 143821000) { return 424; } - else if (iPreco <= 144500200) { return 425; } - else if (iPreco <= 145181000) { return 426; } - else if (iPreco <= 145863400) { return 427; } - else if (iPreco <= 146547400) { return 428; } - else if (iPreco <= 147233000) { return 429; } - else if (iPreco <= 147920200) { return 430; } - else if (iPreco <= 148609000) { return 431; } - else if (iPreco <= 149299400) { return 432; } - else if (iPreco <= 149991400) { return 433; } - else if (iPreco <= 150685000) { return 434; } - else if (iPreco <= 151380200) { return 435; } - else if (iPreco <= 152077000) { return 436; } - else if (iPreco <= 152775400) { return 437; } - else if (iPreco <= 153475400) { return 438; } - else if (iPreco <= 154177000) { return 439; } - else if (iPreco <= 154880200) { return 440; } - else if (iPreco <= 155585000) { return 441; } - else if (iPreco <= 156291400) { return 442; } - else if (iPreco <= 156999400) { return 443; } - else if (iPreco <= 157709000) { return 444; } - else if (iPreco <= 158420200) { return 445; } - else if (iPreco <= 159133000) { return 446; } - else if (iPreco <= 159847400) { return 447; } - else if (iPreco <= 160563400) { return 448; } - else if (iPreco <= 161281000) { return 449; } - else if (iPreco <= 162000200) { return 450; } - else if (iPreco <= 162721000) { return 451; } - else if (iPreco <= 163443400) { return 452; } - else if (iPreco <= 164167400) { return 453; } - else if (iPreco <= 164893000) { return 454; } - else if (iPreco <= 165620200) { return 455; } - else if (iPreco <= 166349000) { return 456; } - else if (iPreco <= 167079400) { return 457; } - else if (iPreco <= 167811400) { return 458; } - else if (iPreco <= 168545000) { return 459; } - else if (iPreco <= 169280200) { return 460; } - else if (iPreco <= 170017000) { return 461; } - else if (iPreco <= 170755400) { return 462; } - else if (iPreco <= 171495400) { return 463; } - else if (iPreco <= 172237000) { return 464; } - else if (iPreco <= 172980200) { return 465; } - else if (iPreco <= 173725000) { return 466; } - else if (iPreco <= 174471400) { return 467; } - else if (iPreco <= 175219400) { return 468; } - else if (iPreco <= 175969000) { return 469; } - else if (iPreco <= 176720200) { return 470; } - else if (iPreco <= 177473000) { return 471; } - else if (iPreco <= 178227400) { return 472; } - else if (iPreco <= 178983400) { return 473; } - else if (iPreco <= 179741000) { return 474; } - else if (iPreco <= 180500200) { return 475; } - else if (iPreco <= 181261000) { return 476; } - else if (iPreco <= 182023400) { return 477; } - else if (iPreco <= 182787400) { return 478; } - else if (iPreco <= 183553000) { return 479; } - else if (iPreco <= 184320200) { return 480; } - else if (iPreco <= 185089000) { return 481; } - else if (iPreco <= 185859400) { return 482; } - else if (iPreco <= 186631400) { return 483; } - else if (iPreco <= 187405000) { return 484; } - else if (iPreco <= 188180200) { return 485; } - else if (iPreco <= 188957000) { return 486; } - else if (iPreco <= 189735400) { return 487; } - else if (iPreco <= 190515400) { return 488; } - else if (iPreco <= 191297000) { return 489; } - else if (iPreco <= 192080200) { return 490; } - else if (iPreco <= 192865000) { return 491; } - else if (iPreco <= 193651400) { return 492; } - else if (iPreco <= 194439400) { return 493; } - else if (iPreco <= 195229000) { return 494; } - else if (iPreco <= 196020200) { return 495; } - else if (iPreco <= 196813000) { return 496; } - else if (iPreco <= 197607400) { return 497; } - else if (iPreco <= 198403400) { return 498; } - else if (iPreco <= 199201000) { return 499; } - else if (iPreco <= 200000200) { return 500; } - else if (iPreco <= 200801000) { return 501; } - else if (iPreco <= 201603400) { return 502; } - else if (iPreco <= 202407400) { return 503; } - else if (iPreco <= 203213000) { return 504; } - else if (iPreco <= 204020200) { return 505; } - else if (iPreco <= 204829000) { return 506; } - else if (iPreco <= 205639400) { return 507; } - else if (iPreco <= 206451400) { return 508; } - else if (iPreco <= 207265000) { return 509; } - else if (iPreco <= 208080200) { return 510; } - else if (iPreco <= 208897000) { return 511; } - else if (iPreco <= 209715400) { return 512; } - else if (iPreco <= 210535400) { return 513; } - else if (iPreco <= 211357000) { return 514; } - else if (iPreco <= 212180200) { return 515; } - else if (iPreco <= 213005000) { return 516; } - else if (iPreco <= 213831400) { return 517; } - else if (iPreco <= 214659400) { return 518; } - else if (iPreco <= 215489000) { return 519; } - else if (iPreco <= 216320200) { return 520; } - else if (iPreco <= 217153000) { return 521; } - else if (iPreco <= 217987400) { return 522; } - else if (iPreco <= 218823400) { return 523; } - else if (iPreco <= 219661000) { return 524; } - else if (iPreco <= 220500200) { return 525; } - else if (iPreco <= 221341000) { return 526; } - else if (iPreco <= 222183400) { return 527; } - else if (iPreco <= 223027400) { return 528; } - else if (iPreco <= 223873000) { return 529; } - else if (iPreco <= 224720200) { return 530; } - else if (iPreco <= 225569000) { return 531; } - else if (iPreco <= 226419400) { return 532; } - else if (iPreco <= 227271400) { return 533; } - else if (iPreco <= 228125000) { return 534; } - else if (iPreco <= 228980200) { return 535; } - else if (iPreco <= 229837000) { return 536; } - else if (iPreco <= 230695400) { return 537; } - else if (iPreco <= 231555400) { return 538; } - else if (iPreco <= 232417000) { return 539; } - else if (iPreco <= 233280200) { return 540; } - else if (iPreco <= 234145000) { return 541; } - else if (iPreco <= 235011400) { return 542; } - else if (iPreco <= 235879400) { return 543; } - else if (iPreco <= 236749000) { return 544; } - else if (iPreco <= 237620200) { return 545; } - else if (iPreco <= 238493000) { return 546; } - else if (iPreco <= 239367400) { return 547; } - else if (iPreco <= 240243400) { return 548; } - else if (iPreco <= 241121000) { return 549; } - else if (iPreco <= 242000200) { return 550; } - else if (iPreco <= 242881000) { return 551; } - else if (iPreco <= 243763400) { return 552; } - else if (iPreco <= 244647400) { return 553; } - else if (iPreco <= 245533000) { return 554; } - else if (iPreco <= 246420200) { return 555; } - else if (iPreco <= 247309000) { return 556; } - else if (iPreco <= 248199400) { return 557; } - else if (iPreco <= 249091400) { return 558; } - else if (iPreco <= 249985000) { return 559; } - else if (iPreco <= 250880200) { return 560; } - else if (iPreco <= 251777000) { return 561; } - else if (iPreco <= 252675400) { return 562; } - else if (iPreco <= 253575400) { return 563; } - else if (iPreco <= 254477000) { return 564; } - else if (iPreco <= 255380200) { return 565; } - else if (iPreco <= 256285000) { return 566; } - else if (iPreco <= 257191400) { return 567; } - else if (iPreco <= 258099400) { return 568; } - else if (iPreco <= 259009000) { return 569; } - else if (iPreco <= 259920200) { return 570; } - else if (iPreco <= 260833000) { return 571; } - else if (iPreco <= 261747400) { return 572; } - else if (iPreco <= 262663400) { return 573; } - else if (iPreco <= 263581000) { return 574; } - else if (iPreco <= 264500200) { return 575; } - else if (iPreco <= 265421000) { return 576; } - else if (iPreco <= 266343400) { return 577; } - else if (iPreco <= 267267400) { return 578; } - else if (iPreco <= 268193000) { return 579; } - else if (iPreco <= 269120200) { return 580; } - else if (iPreco <= 270049000) { return 581; } - else if (iPreco <= 270979400) { return 582; } - else if (iPreco <= 271911400) { return 583; } - else if (iPreco <= 272845000) { return 584; } - else if (iPreco <= 273780200) { return 585; } - else if (iPreco <= 274717000) { return 586; } - else if (iPreco <= 275655400) { return 587; } - else if (iPreco <= 276595400) { return 588; } - else if (iPreco <= 277537000) { return 589; } - else if (iPreco <= 278480200) { return 590; } - else if (iPreco <= 279425000) { return 591; } - else if (iPreco <= 280371400) { return 592; } - else if (iPreco <= 281319400) { return 593; } - else if (iPreco <= 282269000) { return 594; } - else if (iPreco <= 283220200) { return 595; } - else if (iPreco <= 284173000) { return 596; } - else if (iPreco <= 285127400) { return 597; } - else if (iPreco <= 286083400) { return 598; } - else if (iPreco <= 287041000) { return 599; } - else if (iPreco <= 288000200) { return 600; } - else if (iPreco <= 288961000) { return 601; } - else if (iPreco <= 289923400) { return 602; } - else if (iPreco <= 290887400) { return 603; } - else if (iPreco <= 291853000) { return 604; } - else if (iPreco <= 292820200) { return 605; } - else if (iPreco <= 293789000) { return 606; } - else if (iPreco <= 294759400) { return 607; } - else if (iPreco <= 295731400) { return 608; } - else if (iPreco <= 296705000) { return 609; } - else if (iPreco <= 297680200) { return 610; } - else if (iPreco <= 298657000) { return 611; } - else if (iPreco <= 299635400) { return 612; } - else if (iPreco <= 300615400) { return 613; } - else if (iPreco <= 301597000) { return 614; } - else if (iPreco <= 302580200) { return 615; } - else if (iPreco <= 303565000) { return 616; } - else if (iPreco <= 304551400) { return 617; } - else if (iPreco <= 305539400) { return 618; } - else if (iPreco <= 306529000) { return 619; } - else if (iPreco <= 307520200) { return 620; } - else if (iPreco <= 308513000) { return 621; } - else if (iPreco <= 309507400) { return 622; } - else if (iPreco <= 310503400) { return 623; } - else if (iPreco <= 311501000) { return 624; } - else if (iPreco <= 312500200) { return 625; } - else if (iPreco <= 313501000) { return 626; } - else if (iPreco <= 314503400) { return 627; } - else if (iPreco <= 315507400) { return 628; } - else if (iPreco <= 316513000) { return 629; } - else if (iPreco <= 317520200) { return 630; } - else if (iPreco <= 318529000) { return 631; } - else if (iPreco <= 319539400) { return 632; } - else if (iPreco <= 320551400) { return 633; } - else if (iPreco <= 321565000) { return 634; } - else if (iPreco <= 322580200) { return 635; } - else if (iPreco <= 323597000) { return 636; } - else if (iPreco <= 324615400) { return 637; } - else if (iPreco <= 325635400) { return 638; } - else if (iPreco <= 326657000) { return 639; } - else if (iPreco <= 327680200) { return 640; } - else if (iPreco <= 328705000) { return 641; } - else if (iPreco <= 329731400) { return 642; } - else if (iPreco <= 330759400) { return 643; } - else if (iPreco <= 331789000) { return 644; } - else if (iPreco <= 332820200) { return 645; } - else if (iPreco <= 333853000) { return 646; } - else if (iPreco <= 334887400) { return 647; } - else if (iPreco <= 335923400) { return 648; } - else if (iPreco <= 336961000) { return 649; } - else if (iPreco <= 338000200) { return 650; } - else if (iPreco <= 339041000) { return 651; } - else if (iPreco <= 340083400) { return 652; } - else if (iPreco <= 341127400) { return 653; } - else if (iPreco <= 342173000) { return 654; } - else if (iPreco <= 343220200) { return 655; } - else if (iPreco <= 344269000) { return 656; } - else if (iPreco <= 345319400) { return 657; } - else if (iPreco <= 346371400) { return 658; } - else if (iPreco <= 347425000) { return 659; } - else if (iPreco <= 348480200) { return 660; } - else if (iPreco <= 349537000) { return 661; } - else if (iPreco <= 350595400) { return 662; } - else if (iPreco <= 351655400) { return 663; } - else if (iPreco <= 352717000) { return 664; } - else if (iPreco <= 353780200) { return 665; } - else if (iPreco <= 354845000) { return 666; } - else if (iPreco <= 355911400) { return 667; } - else if (iPreco <= 356979400) { return 668; } - else if (iPreco <= 358049000) { return 669; } - else if (iPreco <= 359120200) { return 670; } - else if (iPreco <= 360193000) { return 671; } - else if (iPreco <= 361267400) { return 672; } - else if (iPreco <= 362343400) { return 673; } - else if (iPreco <= 363421000) { return 674; } - else if (iPreco <= 364500200) { return 675; } - else if (iPreco <= 365581000) { return 676; } - else if (iPreco <= 366663400) { return 677; } - else if (iPreco <= 367747400) { return 678; } - else if (iPreco <= 368833000) { return 679; } - else if (iPreco <= 369920200) { return 680; } - else if (iPreco <= 371009000) { return 681; } - else if (iPreco <= 372099400) { return 682; } - else if (iPreco <= 373191400) { return 683; } - else if (iPreco <= 374285000) { return 684; } - else if (iPreco <= 375380200) { return 685; } - else if (iPreco <= 376477000) { return 686; } - else if (iPreco <= 377575400) { return 687; } - else if (iPreco <= 378675400) { return 688; } - else if (iPreco <= 379777000) { return 689; } - else if (iPreco <= 380880200) { return 690; } - else if (iPreco <= 381985000) { return 691; } - else if (iPreco <= 383091400) { return 692; } - else if (iPreco <= 384199400) { return 693; } - else if (iPreco <= 385309000) { return 694; } - else if (iPreco <= 386420200) { return 695; } - else if (iPreco <= 387533000) { return 696; } - else if (iPreco <= 388647400) { return 697; } - else if (iPreco <= 389763400) { return 698; } - else if (iPreco <= 390881000) { return 699; } - else if (iPreco <= 392000200) { return 700; } - else if (iPreco <= 393121000) { return 701; } - else if (iPreco <= 394243400) { return 702; } - else if (iPreco <= 395367400) { return 703; } - else if (iPreco <= 396493000) { return 704; } - else if (iPreco <= 397620200) { return 705; } - else if (iPreco <= 398749000) { return 706; } - else if (iPreco <= 399879400) { return 707; } - else if (iPreco <= 401011400) { return 708; } - else if (iPreco <= 402145000) { return 709; } - else if (iPreco <= 403280200) { return 710; } - else if (iPreco <= 404417000) { return 711; } - else if (iPreco <= 405555400) { return 712; } - else if (iPreco <= 406695400) { return 713; } - else if (iPreco <= 407837000) { return 714; } - else if (iPreco <= 408980200) { return 715; } - else if (iPreco <= 410125000) { return 716; } - else if (iPreco <= 411271400) { return 717; } - else if (iPreco <= 412419400) { return 718; } - else if (iPreco <= 413569000) { return 719; } - else if (iPreco <= 414720200) { return 720; } - else if (iPreco <= 415873000) { return 721; } - else if (iPreco <= 417027400) { return 722; } - else if (iPreco <= 418183400) { return 723; } - else if (iPreco <= 419341000) { return 724; } - else if (iPreco <= 420500200) { return 725; } - else if (iPreco <= 421661000) { return 726; } - else if (iPreco <= 422823400) { return 727; } - else if (iPreco <= 423987400) { return 728; } - else if (iPreco <= 425153000) { return 729; } - else if (iPreco <= 426320200) { return 730; } - else if (iPreco <= 427489000) { return 731; } - else if (iPreco <= 428659400) { return 732; } - else if (iPreco <= 429831400) { return 733; } - else if (iPreco <= 431005000) { return 734; } - else if (iPreco <= 432180200) { return 735; } - else if (iPreco <= 433357000) { return 736; } - else if (iPreco <= 434535400) { return 737; } - else if (iPreco <= 435715400) { return 738; } - else if (iPreco <= 436897000) { return 739; } - else if (iPreco <= 438080200) { return 740; } - else if (iPreco <= 439265000) { return 741; } - else if (iPreco <= 440451400) { return 742; } - else if (iPreco <= 441639400) { return 743; } - else if (iPreco <= 442829000) { return 744; } - else if (iPreco <= 444020200) { return 745; } - else if (iPreco <= 445213000) { return 746; } - else if (iPreco <= 446407400) { return 747; } - else if (iPreco <= 447603400) { return 748; } - else if (iPreco <= 448801000) { return 749; } - else if (iPreco <= 450000200) { return 750; } - else if (iPreco <= 451201000) { return 751; } - else if (iPreco <= 452403400) { return 752; } - else if (iPreco <= 453607400) { return 753; } - else if (iPreco <= 454813000) { return 754; } - else if (iPreco <= 456020200) { return 755; } - else if (iPreco <= 457229000) { return 756; } - else if (iPreco <= 458439400) { return 757; } - else if (iPreco <= 459651400) { return 758; } - else if (iPreco <= 460865000) { return 759; } - else if (iPreco <= 462080200) { return 760; } - else if (iPreco <= 463297000) { return 761; } - else if (iPreco <= 464515400) { return 762; } - else if (iPreco <= 465735400) { return 763; } - else if (iPreco <= 466957000) { return 764; } - else if (iPreco <= 468180200) { return 765; } - else if (iPreco <= 469405000) { return 766; } - else if (iPreco <= 470631400) { return 767; } - else if (iPreco <= 471859400) { return 768; } - else if (iPreco <= 473089000) { return 769; } - else if (iPreco <= 474320200) { return 770; } - else if (iPreco <= 475553000) { return 771; } - else if (iPreco <= 476787400) { return 772; } - else if (iPreco <= 478023400) { return 773; } - else if (iPreco <= 479261000) { return 774; } - else if (iPreco <= 480500200) { return 775; } - else if (iPreco <= 481741000) { return 776; } - else if (iPreco <= 482983400) { return 777; } - else if (iPreco <= 484227400) { return 778; } - else if (iPreco <= 485473000) { return 779; } - else if (iPreco <= 486720200) { return 780; } - else if (iPreco <= 487969000) { return 781; } - else if (iPreco <= 489219400) { return 782; } - else if (iPreco <= 490471400) { return 783; } - else if (iPreco <= 491725000) { return 784; } - else if (iPreco <= 492980200) { return 785; } - else if (iPreco <= 494237000) { return 786; } - else if (iPreco <= 495495400) { return 787; } - else if (iPreco <= 496755400) { return 788; } - else if (iPreco <= 498017000) { return 789; } - else if (iPreco <= 499280200) { return 790; } - else if (iPreco <= 500545000) { return 791; } - else if (iPreco <= 501811400) { return 792; } - else if (iPreco <= 503079400) { return 793; } - else if (iPreco <= 504349000) { return 794; } - else if (iPreco <= 505620200) { return 795; } - else if (iPreco <= 506893000) { return 796; } - else if (iPreco <= 508167400) { return 797; } - else if (iPreco <= 509443400) { return 798; } - else if (iPreco <= 510721000) { return 799; } - else if (iPreco <= 512000200) { return 800; } - else if (iPreco <= 513281000) { return 801; } - else if (iPreco <= 514563400) { return 802; } - else if (iPreco <= 515847400) { return 803; } - else if (iPreco <= 517133000) { return 804; } - else if (iPreco <= 518420200) { return 805; } - else if (iPreco <= 519709000) { return 806; } - else if (iPreco <= 520999400) { return 807; } - else if (iPreco <= 522291400) { return 808; } - else if (iPreco <= 523585000) { return 809; } - else if (iPreco <= 524880200) { return 810; } - else if (iPreco <= 526177000) { return 811; } - else if (iPreco <= 527475400) { return 812; } - else if (iPreco <= 528775400) { return 813; } - else if (iPreco <= 530077000) { return 814; } - else if (iPreco <= 531380200) { return 815; } - else if (iPreco <= 532685000) { return 816; } - else if (iPreco <= 533991400) { return 817; } - else if (iPreco <= 535299400) { return 818; } - else if (iPreco <= 536609000) { return 819; } - else if (iPreco <= 537920200) { return 820; } - else if (iPreco <= 539233000) { return 821; } - else if (iPreco <= 540547400) { return 822; } - else if (iPreco <= 541863400) { return 823; } - else if (iPreco <= 543181000) { return 824; } - else if (iPreco <= 544500200) { return 825; } - else if (iPreco <= 545821000) { return 826; } - else if (iPreco <= 547143400) { return 827; } - else if (iPreco <= 548467400) { return 828; } - else if (iPreco <= 549793000) { return 829; } - else if (iPreco <= 551120200) { return 830; } - else if (iPreco <= 552449000) { return 831; } - else if (iPreco <= 553779400) { return 832; } - else if (iPreco <= 555111400) { return 833; } - else if (iPreco <= 556445000) { return 834; } - else if (iPreco <= 557780200) { return 835; } - else if (iPreco <= 559117000) { return 836; } - else if (iPreco <= 560455400) { return 837; } - else if (iPreco <= 561795400) { return 838; } - else if (iPreco <= 563137000) { return 839; } - else if (iPreco <= 564480200) { return 840; } - else if (iPreco <= 565825000) { return 841; } - else if (iPreco <= 567171400) { return 842; } - else if (iPreco <= 568519400) { return 843; } - else if (iPreco <= 569869000) { return 844; } - else if (iPreco <= 571220200) { return 845; } - else if (iPreco <= 572573000) { return 846; } - else if (iPreco <= 573927400) { return 847; } - else if (iPreco <= 575283400) { return 848; } - else if (iPreco <= 576641000) { return 849; } - else if (iPreco <= 578000200) { return 850; } - else if (iPreco <= 579361000) { return 851; } - else if (iPreco <= 580723400) { return 852; } - else if (iPreco <= 582087400) { return 853; } - else if (iPreco <= 583453000) { return 854; } - else if (iPreco <= 584820200) { return 855; } - else if (iPreco <= 586189000) { return 856; } - else if (iPreco <= 587559400) { return 857; } - else if (iPreco <= 588931400) { return 858; } - else if (iPreco <= 590305000) { return 859; } - else if (iPreco <= 591680200) { return 860; } - else if (iPreco <= 593057000) { return 861; } - else if (iPreco <= 594435400) { return 862; } - else if (iPreco <= 595815400) { return 863; } - else if (iPreco <= 597197000) { return 864; } - else if (iPreco <= 598580200) { return 865; } - else if (iPreco <= 599965000) { return 866; } - else if (iPreco <= 601351400) { return 867; } - else if (iPreco <= 602739400) { return 868; } - else if (iPreco <= 604129000) { return 869; } - else if (iPreco <= 605520200) { return 870; } - else if (iPreco <= 606913000) { return 871; } - else if (iPreco <= 608307400) { return 872; } - else if (iPreco <= 609703400) { return 873; } - else if (iPreco <= 611101000) { return 874; } - else if (iPreco <= 612500200) { return 875; } - else if (iPreco <= 613901000) { return 876; } - else if (iPreco <= 615303400) { return 877; } - else if (iPreco <= 616707400) { return 878; } - else if (iPreco <= 618113000) { return 879; } - else if (iPreco <= 619520200) { return 880; } - else if (iPreco <= 620929000) { return 881; } - else if (iPreco <= 622339400) { return 882; } - else if (iPreco <= 623751400) { return 883; } - else if (iPreco <= 625165000) { return 884; } - else if (iPreco <= 626580200) { return 885; } - else if (iPreco <= 627997000) { return 886; } - else if (iPreco <= 629415400) { return 887; } - else if (iPreco <= 630835400) { return 888; } - else if (iPreco <= 632257000) { return 889; } - else if (iPreco <= 633680200) { return 890; } - else if (iPreco <= 635105000) { return 891; } - else if (iPreco <= 636531400) { return 892; } - else if (iPreco <= 637959400) { return 893; } - else if (iPreco <= 639389000) { return 894; } - else if (iPreco <= 640820200) { return 895; } - else if (iPreco <= 642253000) { return 896; } - else if (iPreco <= 643687400) { return 897; } - else if (iPreco <= 645123400) { return 898; } - else if (iPreco <= 646561000) { return 899; } - else if (iPreco <= 648000200) { return 900; } - else if (iPreco <= 649441000) { return 901; } - else if (iPreco <= 650883400) { return 902; } - else if (iPreco <= 652327400) { return 903; } - else if (iPreco <= 653773000) { return 904; } - else if (iPreco <= 655220200) { return 905; } - else if (iPreco <= 656669000) { return 906; } - else if (iPreco <= 658119400) { return 907; } - else if (iPreco <= 659571400) { return 908; } - else if (iPreco <= 661025000) { return 909; } - else if (iPreco <= 662480200) { return 910; } - else if (iPreco <= 663937000) { return 911; } - else if (iPreco <= 665395400) { return 912; } - else if (iPreco <= 666855400) { return 913; } - else if (iPreco <= 668317000) { return 914; } - else if (iPreco <= 669780200) { return 915; } - else if (iPreco <= 671245000) { return 916; } - else if (iPreco <= 672711400) { return 917; } - else if (iPreco <= 674179400) { return 918; } - else if (iPreco <= 675649000) { return 919; } - else if (iPreco <= 677120200) { return 920; } - else if (iPreco <= 678593000) { return 921; } - else if (iPreco <= 680067400) { return 922; } - else if (iPreco <= 681543400) { return 923; } - else if (iPreco <= 683021000) { return 924; } - else if (iPreco <= 684500200) { return 925; } - else if (iPreco <= 685981000) { return 926; } - else if (iPreco <= 687463400) { return 927; } - else if (iPreco <= 688947400) { return 928; } - else if (iPreco <= 690433000) { return 929; } - else if (iPreco <= 691920200) { return 930; } - else if (iPreco <= 693409000) { return 931; } - else if (iPreco <= 694899400) { return 932; } - else if (iPreco <= 696391400) { return 933; } - else if (iPreco <= 697885000) { return 934; } - else if (iPreco <= 699380200) { return 935; } - else if (iPreco <= 700877000) { return 936; } - else if (iPreco <= 702375400) { return 937; } - else if (iPreco <= 703875400) { return 938; } - else if (iPreco <= 705377000) { return 939; } - else if (iPreco <= 706880200) { return 940; } - else if (iPreco <= 708385000) { return 941; } - else if (iPreco <= 709891400) { return 942; } - else if (iPreco <= 711399400) { return 943; } - else if (iPreco <= 712909000) { return 944; } - else if (iPreco <= 714420200) { return 945; } - else if (iPreco <= 715933000) { return 946; } - else if (iPreco <= 717447400) { return 947; } - else if (iPreco <= 718963400) { return 948; } - else if (iPreco <= 720481000) { return 949; } - else if (iPreco <= 722000200) { return 950; } - else if (iPreco <= 723521000) { return 951; } - else if (iPreco <= 725043400) { return 952; } - else if (iPreco <= 726567400) { return 953; } - else if (iPreco <= 728093000) { return 954; } - else if (iPreco <= 729620200) { return 955; } - else if (iPreco <= 731149000) { return 956; } - else if (iPreco <= 732679400) { return 957; } - else if (iPreco <= 734211400) { return 958; } - else if (iPreco <= 735745000) { return 959; } - else if (iPreco <= 737280200) { return 960; } - else if (iPreco <= 738817000) { return 961; } - else if (iPreco <= 740355400) { return 962; } - else if (iPreco <= 741895400) { return 963; } - else if (iPreco <= 743437000) { return 964; } - else if (iPreco <= 744980200) { return 965; } - else if (iPreco <= 746525000) { return 966; } - else if (iPreco <= 748071400) { return 967; } - else if (iPreco <= 749619400) { return 968; } - else if (iPreco <= 751169000) { return 969; } - else if (iPreco <= 752720200) { return 970; } - else if (iPreco <= 754273000) { return 971; } - else if (iPreco <= 755827400) { return 972; } - else if (iPreco <= 757383400) { return 973; } - else if (iPreco <= 758941000) { return 974; } - else if (iPreco <= 760500200) { return 975; } - else if (iPreco <= 762061000) { return 976; } - else if (iPreco <= 763623400) { return 977; } - else if (iPreco <= 765187400) { return 978; } - else if (iPreco <= 766753000) { return 979; } - else if (iPreco <= 768320200) { return 980; } - else if (iPreco <= 769889000) { return 981; } - else if (iPreco <= 771459400) { return 982; } - else if (iPreco <= 773031400) { return 983; } - else if (iPreco <= 774605000) { return 984; } - else if (iPreco <= 776180200) { return 985; } - else if (iPreco <= 777757000) { return 986; } - else if (iPreco <= 779335400) { return 987; } - else if (iPreco <= 780915400) { return 988; } - else if (iPreco <= 782497000) { return 989; } - else if (iPreco <= 784080200) { return 990; } - else if (iPreco <= 785665000) { return 991; } - else if (iPreco <= 787251400) { return 992; } - else if (iPreco <= 788839400) { return 993; } - else if (iPreco <= 790429000) { return 994; } - else if (iPreco <= 792020200) { return 995; } - else if (iPreco <= 793613000) { return 996; } - else if (iPreco <= 795207400) { return 997; } - else if (iPreco <= 796803400) { return 998; } - else if (iPreco <= 798401000) { return 999; } - else /*if (iPreco <= 800000200)*/ { return 1000; } - -/* - SISTEMA TRADICIONAL DE CALCULO DE NIVEL DE ITEM - - if (iPreco <= 1000) { return 1; } - else if (iPreco <= 1500) { return 2; } - else if (iPreco <= 2500) { return 3; } - else if (iPreco <= 3500) { return 4; } - else if (iPreco <= 5000) { return 5; } - else if (iPreco <= 6500) { return 6; } - else if (iPreco <= 9000) { return 7; } - else if (iPreco <= 12000) { return 8; } - else if (iPreco <= 15000) { return 9; } - else if (iPreco <= 19500) { return 10; } - else if (iPreco <= 25000) { return 11; } - else if (iPreco <= 30000) { return 12; } - else if (iPreco <= 35000) { return 13; } - else if (iPreco <= 40000) { return 14; } - else if (iPreco <= 50000) { return 15; } - else if (iPreco <= 65000) { return 16; } - else if (iPreco <= 75000) { return 17; } - else if (iPreco <= 90000) { return 18; } - else if (iPreco <= 110000) { return 19; } - else if (iPreco <= 130000) { return 20; } - else if (iPreco <= 250000) { return 21; } - else if (iPreco <= 500000) { return 22; } - else if (iPreco <= 750000) { return 23; } - else { - - int iCalculador = (((iPreco - 1000000) / 200000) + 24); - - if (NIVEL_MAXIMO_PERMITIDO < iCalculador) - { - return NIVEL_MAXIMO_PERMITIDO; - } - else - { - return iCalculador; - } - } -*/ -} -//****************************************************************************** - -//****************************************************************************** -int ObterNivelItem(object oItem) -{ - return ConverterPrecoNivelItem(GetGoldPieceValue(oItem)); -} -//atualizado abaixo -/*int ObterNivelItem(object oItem) -{ - int iNivel = NIVELConverterPrecoNivelItem( GetGoldPieceValue( oItem ) ); - if ( !( IPGetIsBludgeoningWeapon( oItem ) || IPGetIsMeleeWeapon( oItem ) || - IPGetIsRangedWeapon( oItem ) ) ) - { - iNivel *= NIVEL_CONSTANTE; - } - return iNivel; -}*/ -//****************************************************************************** - -//****************************************************************************** -int ObterExperienciaItem(object oItem) -{ - return ObterExperienciaNivel(ObterNivelItem(oItem)); -} -//****************************************************************************** diff --git a/_haks/poa_exp_ability/nw_s1_aurablnda.ncs b/_haks/poa_exp_ability/nw_s1_aurablnda.ncs deleted file mode 100644 index fd9232ed..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_aurablnda.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_aurablnda.nss b/_haks/poa_exp_ability/nw_s1_aurablnda.nss deleted file mode 100644 index 0babfaa1..00000000 --- a/_haks/poa_exp_ability/nw_s1_aurablnda.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of Blinding On Enter -//:: NW_S1_AuraBlndA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Upon entering the aura of the creature the player - must make a will save or be blinded because of the - sheer ugliness or beauty of the creature. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD/3); - - effect eBlind = EffectBlindness(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVis = EffectVisualEffect(VFX_IMP_BLIND_DEAF_M); - effect eLink = EffectLinkEffects(eBlind, eDur); - - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - - //Entering object must make a will save or be blinded for the duration. - if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_BLINDING)); - if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC)) - { - //Apply the blind effect and the VFX impact - DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - } - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_auracoldc.ncs b/_haks/poa_exp_ability/nw_s1_auracoldc.ncs deleted file mode 100644 index 5f75f91f..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_auracoldc.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_auracoldc.nss b/_haks/poa_exp_ability/nw_s1_auracoldc.nss deleted file mode 100644 index 49cd95e0..00000000 --- a/_haks/poa_exp_ability/nw_s1_auracoldc.nss +++ /dev/null @@ -1,62 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of Frost on Heartbeat -//:: NW_S1_AuraColdC.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Prolonged exposure to the aura of the creature - causes frost damage to all within the aura. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nFrost = 1 + (nHD/3); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - - effect eDam; - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - - //Get the first target in the aura of cold - oTarget = GetFirstInPersistentObject(); - - while (GetIsObjectValid(oTarget)) - { -/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) - { - oTarget = GetNextInPersistentObject(OBJECT_SELF); - continue; - } */ - if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_COLD)); - //Roll damage based on the creatures HD - nDamage = d4(nFrost); - //Make a Fortitude save for half - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_COLD)) - { - nDamage = nDamage / 2; - } - //Set the damage effect - eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD); - //Apply the VFX constant and damage effect - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - //Get the next target in the aura of cold - oTarget = GetNextInPersistentObject(); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_auraelecc.ncs b/_haks/poa_exp_ability/nw_s1_auraelecc.ncs deleted file mode 100644 index e4a94562..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_auraelecc.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_auraelecc.nss b/_haks/poa_exp_ability/nw_s1_auraelecc.nss deleted file mode 100644 index 06994f44..00000000 --- a/_haks/poa_exp_ability/nw_s1_auraelecc.nss +++ /dev/null @@ -1,58 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of Electricity on Heartbeat -//:: NW_S1_AuraElecC.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Prolonged exposure to the aura of the creature - causes electrical damage to all within the aura. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - int nHD = GetHitDice(oNPC); - int nZap = 1 + (nHD / 3); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 + nCHAMod + (nHD/2); - int nDamage; - - effect eDam; - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - - //Get first target in spell area - object oTarget = GetFirstInPersistentObject(); - while (GetIsObjectValid(oTarget)) - { -/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) - { - oTarget = GetNextInPersistentObject(OBJECT_SELF); - continue; - } */ - if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) - { - nDamage = d4(nZap); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_AURA_ELECTRICITY)); - //Make a saving throw check - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY)) - { - nDamage = nDamage / 2; - } - eDam = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); - //Apply the VFX impact and effects - DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - //Get next target in spell area - oTarget = GetNextInPersistentObject(); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_aurafear.ncs b/_haks/poa_exp_ability/nw_s1_aurafear.ncs deleted file mode 100644 index 8612d76f..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_aurafear.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_aurafear.nss b/_haks/poa_exp_ability/nw_s1_aurafear.nss deleted file mode 100644 index 52750544..00000000 --- a/_haks/poa_exp_ability/nw_s1_aurafear.nss +++ /dev/null @@ -1,62 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of Fear -//:: NW_S1_AuraFear.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Upon entering the aura of the creature the player - must make a will save or be struck with fear because - of the creatures presence. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// - -// Modified 2004/01/30 (Brian Greinke) -// Added disable/reenable support -#include "prc_alterations" - -void main() -{ - //first, look to see if effect is already activated - if ( GetHasSpellEffect(SPELLABILITY_AURA_FEAR, OBJECT_SELF) ) - { - PRCRemoveSpellEffects( SPELLABILITY_AURA_FEAR, OBJECT_SELF, OBJECT_SELF ); - return; - } - - object oCaster = OBJECT_SELF; -if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(oCaster)) -{ - -//Make them stop what they are doing instantly! -AssignCommand(oCaster, ClearAllActions()); - -//Though the player may show animation, nothing happens! :) -//SetModuleOverrideSpellScriptFinished(); - -FloatingTextStringOnCreature("All spells fizzle in town.", oCaster); - -return; -} - -/////////////////////////////////////////////////////////////////////////////// -//Handle Jail... -//NO ITEMS WORK IN JAIL!!! -if(GetLocalInt(GetArea(oCaster), "JAIL")==1) -{ - AssignCommand(oCaster, ClearAllActions()); - //Though the player may show animation, nothing happens! :) - //SetModuleOverrideSpellScriptFinished(); - - return; -} - -/////////////////////////////////////////////////////////////////////////////// - - - //Set and apply AOE object - effect eAOE = EffectAreaOfEffect(AOE_MOB_FEAR); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAOE, OBJECT_SELF, HoursToSeconds(100)); -} diff --git a/_haks/poa_exp_ability/nw_s1_aurafirec.ncs b/_haks/poa_exp_ability/nw_s1_aurafirec.ncs deleted file mode 100644 index 0578cd09..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_aurafirec.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_aurafirec.nss b/_haks/poa_exp_ability/nw_s1_aurafirec.nss deleted file mode 100644 index a6b96381..00000000 --- a/_haks/poa_exp_ability/nw_s1_aurafirec.nss +++ /dev/null @@ -1,59 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of Fire on Heartbeat -//:: NW_S1_AuraFireC.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Prolonged exposure to the aura of the creature - causes fire damage to all within the aura. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetFirstInPersistentObject(); //:: Get first target in spell area - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nBurn = 1 + (nHD/3); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - int nDamSave; - - effect eDam; - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - - while(GetIsObjectValid(oTarget)) - { -/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) - { - oTarget = GetNextInPersistentObject(OBJECT_SELF); - continue; - } */ - if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_FIRE)); - //Roll damage - nDamage = d4(nBurn); - //Make a saving throw check - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_FIRE)) - { - nDamage = nDamage / 2; - } - //Set the damage effect - eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } - //Get next target in spell area - oTarget = GetNextInPersistentObject(); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_auramenca.ncs b/_haks/poa_exp_ability/nw_s1_auramenca.ncs deleted file mode 100644 index 7330afd2..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_auramenca.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_auramenca.nss b/_haks/poa_exp_ability/nw_s1_auramenca.nss deleted file mode 100644 index e786aaa2..00000000 --- a/_haks/poa_exp_ability/nw_s1_auramenca.nss +++ /dev/null @@ -1,46 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of Menace On Enter -//:: NW_S1_AuraMencA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Upon entering the aura all those that fail - a will save are stricken with Doom. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - - int nDuration = 1 + (GetHitDice(oNPC)/3); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (GetHitDice(oNPC)/2); - int nLevel = GetCasterLevel(OBJECT_SELF); - int nMetaMagic = PRCGetMetaMagicFeat(); - - effect eVis = EffectVisualEffect(VFX_IMP_DOOM); - effect eLink = CreateDoomEffectsLink(); - - if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_AURA_MENACE)); - //Spell Resistance and Saving throw - if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC)) - { - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink , oTarget, TurnsToSeconds(nDuration)); - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_auraprota.ncs b/_haks/poa_exp_ability/nw_s1_auraprota.ncs deleted file mode 100644 index cea1eeca..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_auraprota.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_auraprota.nss b/_haks/poa_exp_ability/nw_s1_auraprota.nss deleted file mode 100644 index 548f2840..00000000 --- a/_haks/poa_exp_ability/nw_s1_auraprota.nss +++ /dev/null @@ -1,35 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of Protection: On Enter -//:: NW_S1_AuraProtA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Acts as a double strength Magic Circle against - evil and a Minor Globe for those friends in - the area. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On:Jan 8, 2002, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -void main() -{ - //Declare major variables - effect eProt = CreateProtectionFromAlignmentLink(ALIGNMENT_EVIL); - effect eGlobe = EffectSpellLevelAbsorption(3, 0); - effect eDur = EffectVisualEffect(VFX_DUR_GLOBE_MINOR); - - effect eLink = EffectLinkEffects(eProt, eGlobe); - eLink = EffectLinkEffects(eLink, eDur); - - object oTarget = GetEnteringObject(); - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - //Faction Check - if(GetIsFriend(oTarget, GetAreaOfEffectCreator())) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_aurastuna.ncs b/_haks/poa_exp_ability/nw_s1_aurastuna.ncs deleted file mode 100644 index 2ece1e35..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_aurastuna.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_aurastuna.nss b/_haks/poa_exp_ability/nw_s1_aurastuna.nss deleted file mode 100644 index 03d0aae0..00000000 --- a/_haks/poa_exp_ability/nw_s1_aurastuna.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura Stunning On Enter -//:: NW_S1_AuraStunA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Upon entering the aura of the creature the player - must make a will save or be stunned. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDuration = GetHitDice(oNPC); - int nDC = 10 + nCHAMod + (nDuration/2); - - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - - effect eVis = EffectVisualEffect(VFX_IMP_STUN); - effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eDeath = EffectStunned(); - effect eLink = EffectLinkEffects(eVis2, eDeath); - - nDuration = GetScaledDuration(nDuration, oTarget); - - if(!GetIsFriend(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_STUN)); - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_auraunata.ncs b/_haks/poa_exp_ability/nw_s1_auraunata.ncs deleted file mode 100644 index 8ebd9473..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_auraunata.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_auraunata.nss b/_haks/poa_exp_ability/nw_s1_auraunata.nss deleted file mode 100644 index a5970627..00000000 --- a/_haks/poa_exp_ability/nw_s1_auraunata.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of the Unnatural On Enter -//:: NW_S1_AuraMencA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Upon entering the aura all animals are struck with - fear. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); - effect eFear = EffectFrightened(); - effect eLink = EffectLinkEffects(eVis, eFear); - object oTarget = GetEnteringObject(); - - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - - int nDuration = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nRacial = GetRacialType(oTarget); - int nDC = 10 + nCHAMod + (GetHitDice(oNPC)/2); - - if(GetIsEnemy(oTarget)) - { - nDuration = (nDuration / 3) + 1; - //Make a saving throw check - if(nRacial == RACIAL_TYPE_ANIMAL) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_UNNATURAL)); - //if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) //:: This ability only affects animals & they don't get a save. - //{ - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - //} - } - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_aurauneaa.ncs b/_haks/poa_exp_ability/nw_s1_aurauneaa.ncs deleted file mode 100644 index c99e654d..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_aurauneaa.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_aurauneaa.nss b/_haks/poa_exp_ability/nw_s1_aurauneaa.nss deleted file mode 100644 index 6f4a75bc..00000000 --- a/_haks/poa_exp_ability/nw_s1_aurauneaa.nss +++ /dev/null @@ -1,46 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura Unearthly Visage On Enter -//:: NW_S1_AuraUnEaA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Upon entering the aura of the creature the player - must make a will save or be killed because of the - sheer ugliness or beauty of the creature. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - - effect eDeath = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - - if(GetIsEnemy(oTarget, oNPC)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_UNEARTHLY_VISAGE)); - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_barbrage.ncs b/_haks/poa_exp_ability/nw_s1_barbrage.ncs deleted file mode 100644 index fcafbffb..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_barbrage.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_barbrage.nss b/_haks/poa_exp_ability/nw_s1_barbrage.nss deleted file mode 100644 index f6454d7b..00000000 --- a/_haks/poa_exp_ability/nw_s1_barbrage.nss +++ /dev/null @@ -1,439 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Barbarian Rage -//:: NW_S1_BarbRage -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - The Str and Con of the Barbarian increases, - Will Save are +2, AC -2. - Greater Rage starts at level 15. - - Updated: 2004-01-18 mr_bumpkin: Added bonuses for exceeding +12 stat cap - Updated: 2004-2-24 by Oni5115: Added Intimidating Rage -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Aug 13, 2001 -//::////////////////////////////////////////////// - -#include "moi_inc_moifunc" -#include "inc_addragebonus" -#include "inc_npc" -#include "psi_inc_psifunc" -#include "prc_inc_factotum" - -void main() -{ - object oPC = OBJECT_SELF; - - if(GetHasSpellEffect(SPELL_SPELL_RAGE)) - { - IncrementRemainingFeatUses(OBJECT_SELF, FEAT_BARBARIAN_RAGE); - FloatingTextStringOnCreature("You can't use Barbarian Rage and Spell Rage at the same time.", OBJECT_SELF, FALSE); - return; - } - - if(!GetHasFeatEffect(FEAT_BARBARIAN_RAGE) && !GetHasSpellEffect(GetSpellId())) - { - int nBBC = GetLevelByClass(CLASS_TYPE_BLACK_BLOOD_CULTIST); - //Declare major variables - int nLevel = GetLevelByClass(CLASS_TYPE_BARBARIAN) - + GetLevelByClass(CLASS_TYPE_RUNESCARRED) - + GetLevelByClass(CLASS_TYPE_BATTLERAGER) - + GetLevelByClass(CLASS_TYPE_PRC_EYE_OF_GRUUMSH) - + nBBC - + GetLevelByClass(CLASS_TYPE_RAGE_MAGE); - + GetLevelByClass(CLASS_TYPE_WARCHIEF, oPC); - + GetLevelByClass(CLASS_TYPE_ORC_WARLORD, oPC); - + GetLevelByClass(CLASS_TYPE_FRE_BERSERKER, oPC); - + GetLevelByClass(CLASS_TYPE_LEGENDARY_DREADNOUGHT, oPC); - + GetLevelByClass(CLASS_TYPE_TOTEM_RAGER, oPC); - int iStr, iCon, iAC; - int nSave, nBonusEss; - int nTotem = GetLevelByClass(CLASS_TYPE_TOTEM_RAGER, oPC); - - // Factotum Cunning Brilliance - if (GetIsAbilitySaved(oPC, FEAT_BARBARIAN_RAGE)) - nLevel = GetLevelByClass(CLASS_TYPE_FACTOTUM); - - iAC = 2; -//edit rafael - if ((nLevel >= 180) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 25; - iCon = 25; - nSave = 21; - } - if ((nLevel >= 170) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 24; - iCon = 24; - nSave = 20; - } - if ((nLevel >= 160) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 23; - iCon = 23; - nSave = 19; - } - if ((nLevel >= 150) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 22; - iCon = 22; - nSave = 18; - } - if ((nLevel >= 140) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 21; - iCon = 21; - nSave = 17; - } - if ((nLevel >= 130) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 20; - iCon = 20; - nSave = 16; - } - if ((nLevel >= 120) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 19; - iCon = 19; - nSave = 15; - } - if ((nLevel >= 110) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 18; - iCon = 18; - nSave = 14; - } - if ((nLevel >= 100) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 17; - iCon = 17; - nSave = 13; - } - - if ((nLevel >= 90) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 16; - iCon = 16; - nSave = 12; - } - - if ((nLevel >= 80) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 15; - iCon = 15; - nSave = 11; - } - - if ((nLevel >= 70) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 14; - iCon = 14; - nSave = 10; - } - - if ((nLevel >= 60) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 13; - iCon = 13; - nSave = 9; - } - - if ((nLevel >= 50) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 12; - iCon = 12; - nSave = 8; - } - - if ((nLevel >= 40) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 11; - iCon = 11; - nSave = 7; - } - - if ((nLevel >= 30) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 10; - iCon = 10; - nSave = 6; - } - - if ((nLevel >= 20) && (GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE, OBJECT_SELF))) - { - iStr = 9; - iCon = 9; - nSave = 5; - } - - -//fim edit rafael 2021 junho - //Lock: Added compatibility for PRC Mighty Rage ability - if(nLevel > 14) - { - if(GetHasFeat(FEAT_PRC_EPIC_MIGHT_RAGE)) - { - iStr = 8; - iCon = 8; - nSave = 4; - } - else - { - iStr = 6; - iCon = 6; - nSave = 3; - } - } - else - { - iStr = 4; - iCon = 4; - nSave = 2; - } - - // Eye of Gruumsh ability. Additional +4 Str and -2 AC. - if(GetHasFeat(FEAT_SWING_BLINDLY)) - { - iStr += 4; - iAC += 2; - } - - // +2 Str/Con -2 AC - if(GetHasFeat(FEAT_RECKLESS_RAGE)) - { - iStr += 2; - iCon += 2; - iAC += 2; - } - // +2 Con - if(GetHasFeat(FEAT_ETTERCAP_BERSERKER)) - iCon += 2; - - //(Patch 1.70 - if not silenced) play a random voice chat instead of just VOICE_CHAT_BATTLECRY1 - if(!PRCGetHasEffect(EFFECT_TYPE_SILENCE)) - { - int iVoice = d3(1); - switch(iVoice) - { - case 1: iVoice = VOICE_CHAT_BATTLECRY1; break; - case 2: iVoice = VOICE_CHAT_BATTLECRY2; break; - case 3: iVoice = VOICE_CHAT_BATTLECRY3; break; - } - PlayVoiceChat(iVoice); - } - - //Determine the duration by getting the con modifier after being modified - //Patch 1.70 - duration calculation was bugged - int nCon = 3 + ((GetAbilityScore(OBJECT_SELF, ABILITY_CONSTITUTION) - 10 + iCon)/2); - effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_CONSTITUTION, iCon)); - eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_STRENGTH, iStr)); - eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_WILL, nSave)); - eLink = EffectLinkEffects(eLink, EffectACDecrease(iAC, AC_DODGE_BONUS)); - - // Blazing Berserker - if(GetHasFeat(FEAT_BLAZING_BERSERKER)) - { - eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD)); - eLink = EffectLinkEffects(eLink, EffectDamageImmunityDecrease(DAMAGE_TYPE_COLD, 50)); - eLink = EffectLinkEffects(eLink, EffectDamageImmunityIncrease(DAMAGE_TYPE_FIRE, 100)); - } - // Frozen Berserker - if(GetHasFeat(FEAT_FROZEN_BERSERKER)) - { - eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD)); - eLink = EffectLinkEffects(eLink, EffectDamageImmunityDecrease(DAMAGE_TYPE_FIRE, 50)); - eLink = EffectLinkEffects(eLink, EffectDamageImmunityIncrease(DAMAGE_TYPE_COLD, 100)); - } - // Ice Troll Berserker - if(GetHasFeat(FEAT_ICE_TROLL_BERSERKER)) - { - int nBonus = 2; - if(nLevel > 14) nBonus = 4; - eLink = EffectLinkEffects(eLink, EffectACIncrease(nBonus, AC_NATURAL_BONUS)); - } - // Cobalt Rage - int nEssentia = GetEssentiaInvestedFeat(oPC, FEAT_COBALT_RAGE); - // Totem Rage from Totem Rager - if (nTotem) - { - int nTotemRage = GetMaxEssentiaCapacityFeat(oPC) - nEssentia; - int nExtraEss = PRCMax(nTotem/2, 1); - int nBoost; - if (nExtraEss >= nTotemRage) - { - nBonusEss = nExtraEss - nTotemRage; - nEssentia += nTotemRage; - } - else - nEssentia += nExtraEss; - } - if (nEssentia) - { - eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_WILL, nEssentia)); - eLink = EffectLinkEffects(eLink, EffectDamageIncrease(IPGetDamageBonusConstantFromNumber(nEssentia), DAMAGE_TYPE_BASE_WEAPON)); - } - - //Make effect extraordinary - eLink = ExtraordinaryEffect(eLink); - effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE); //Change to the Rage VFX - - SignalEvent(oPC, EventSpellCastAt(oPC, SPELLABILITY_BARBARIAN_RAGE, FALSE)); - - if(nCon > 0) - { - // 2004-01-18 mr_bumpkin: determine the ability scores before adding bonuses, so the values - // can be read in by the GiveExtraRageBonuses() function below. - int StrBeforeBonuses = GetAbilityScore(oPC, ABILITY_STRENGTH); - int ConBeforeBonuses = GetAbilityScore(oPC, ABILITY_CONSTITUTION); - - float fDuration = RoundsToSeconds(nCon); - fDuration += GetHasFeat(FEAT_EXTENDED_RAGE, oPC) ? 30.0 : 0.0; - if (nEssentia > 5 && nTotem >= 5) fDuration += 6.0 * (nEssentia - 5); - - // Terrifying Rage - if(GetHasFeat(FEAT_EPIC_TERRIFYING_RAGE)) - { - effect eAOE = EffectAreaOfEffect(AOE_MOB_FEAR, "x2_s2_terrage_A"); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(eAOE), oPC, fDuration); - } - - // Frostrager - int nFrost = GetLevelByClass(CLASS_TYPE_FROSTRAGER, oPC); - object oWeapL = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC); - string sWeapType = "PRC_UNARMED_B"; - if(nFrost>0 && GetBaseItemType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) == BASE_ITEM_INVALID && - GetIsObjectValid(oWeapL) && GetTag(oWeapL) == sWeapType) //Only applies when unarmed and you actually have a creature weapon - { - // Record that we're Frostraging - SetLocalInt(oPC, "Frostrage", TRUE); - DelayCommand(fDuration, DeleteLocalInt(oPC, "Frostrage")); - int nFrostAC = 4; - int nFrostDamage = IP_CONST_DAMAGEBONUS_1d4; - - if(nFrost>3) //Improved Frost Rage - { - nFrostAC = 6; - nFrostDamage = IP_CONST_DAMAGEBONUS_1d6; - } - - eLink = EffectLinkEffects(eLink, EffectACIncrease(nFrostAC, AC_NATURAL_BONUS)); - AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD,nFrostDamage),oWeapL,fDuration); - } - else if (nFrost>0) - FloatingTextStringOnCreature("Frostrage failed, invalid weapon", oPC, FALSE); - - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, fDuration); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC); - - // Totem Rage bonus Essentia - if (nBonusEss) - { - SetTemporaryEssentia(oPC, nBonusEss); - DelayCommand(fDuration, SetTemporaryEssentia(oPC, nBonusEss * -1)); - FloatingTextStringOnCreature("Totem Rage has granted you "+IntToString(nBonusEss)+" temporary essentia", oPC, FALSE); - } - - // Shared Fury - if(GetHasFeat(FEAT_SHARED_FURY, oPC)) - { - object oComp = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oPC), TRUE, OBJECT_TYPE_CREATURE); - while(GetIsObjectValid(oComp)) - { - if(GetMasterNPC(oComp) == oPC && GetAssociateTypeNPC(oComp) == ASSOCIATE_TYPE_ANIMALCOMPANION) - { - PRCRemoveEffectsFromSpell(oComp, SPELLABILITY_BARBARIAN_RAGE); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oComp, fDuration); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oComp); - } - oComp = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oPC), TRUE, OBJECT_TYPE_CREATURE); - } - } - - // 2004-2-24 Oni5115: Intimidating Rage - if(GetHasFeat(FEAT_INTIMIDATING_RAGE, oPC)) - { - //Finds nearest visible enemy within 30 ft. - object oTarget = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, oPC, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN); - if(GetDistanceBetween(oPC, oTarget) < FeetToMeters(30.0)) - { - // Will save DC 10 + 1/2 Char level + Cha mod - int saveDC = 10 + (GetHitDice(oPC)/2) + GetAbilityModifier(ABILITY_CHARISMA, oPC); - int nResult = WillSave(oTarget, saveDC, SAVING_THROW_TYPE_NONE); - if(!nResult) - { - // Same effect as Doom Spell - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectShaken(), oTarget, fDuration); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DOOM), oTarget); - } - } - } - - // Thundering Rage - if(GetHasFeat(FEAT_EPIC_THUNDERING_RAGE, oPC)) - { - object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); - if(GetIsObjectValid(oWeapon)) - { - IPSafeAddItemProperty(oWeapon, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_2d6), fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING,TRUE,TRUE); - IPSafeAddItemProperty(oWeapon, ItemPropertyVisualEffect(ITEM_VISUAL_SONIC), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,FALSE,TRUE); - IPSafeAddItemProperty(oWeapon, ItemPropertyOnHitProps(IP_CONST_ONHIT_DEAFNESS,IP_CONST_ONHIT_SAVEDC_20,IP_CONST_ONHIT_DURATION_25_PERCENT_3_ROUNDS), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,FALSE,TRUE); - } - - oWeapon = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC); - if(GetIsObjectValid(oWeapon)) - { - IPSafeAddItemProperty(oWeapon, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_2d6), fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING,TRUE,TRUE); - IPSafeAddItemProperty(oWeapon,ItemPropertyVisualEffect(ITEM_VISUAL_SONIC), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,FALSE,TRUE); - } - } - - // Black Blood Cultist, don't trigger at 10th level because it becomes permanent then - if (10 > nBBC && nBBC > 0) - { - int nClawDamage = IP_CONST_MONSTERDAMAGE_1d6; - int nBiteDamage = IP_CONST_MONSTERDAMAGE_1d4; - string sResRef = "prc_claw_1d6m_"; - if (nBBC >= 7) - { - nClawDamage = IP_CONST_MONSTERDAMAGE_1d8; - nBiteDamage = IP_CONST_MONSTERDAMAGE_1d6; - sResRef = "prc_claw_1d8m_"; - } - - // Create the creature weapon & add the base damage - object oLClaw = GetPsionicCreatureWeapon(oPC, "PRC_UNARMED_SP", INVENTORY_SLOT_CWEAPON_L, fDuration); - object oRClaw = GetPsionicCreatureWeapon(oPC, "PRC_UNARMED_SP", INVENTORY_SLOT_CWEAPON_R, fDuration); - AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyMonsterDamage(nClawDamage), oLClaw, fDuration); - AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyMonsterDamage(nClawDamage), oRClaw, fDuration); - if (nBBC >= 3) - { - object oBite = GetPsionicCreatureWeapon(oPC, "prc_bw0_bite_t", INVENTORY_SLOT_CWEAPON_B, fDuration); - AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyMonsterDamage(nBiteDamage), oBite, fDuration); - } - if (nBBC >= 6) // Rend, see inc_rend and prc_onhitcast - { - IPSafeAddItemProperty(oLClaw, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); - IPSafeAddItemProperty(oRClaw, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); - } - - sResRef += GetAffixForSize(PRCGetCreatureSize(oPC)); - AddNaturalPrimaryWeapon(oPC, sResRef, 2, TRUE); - DelayCommand(6.0f, NaturalPrimaryWeaponTempCheck(oPC, oPC, GetSpellId(), FloatToInt(fDuration) / 6, sResRef)); - AddNaturalSecondaryWeapon(oPC, "prc_bw0_bite_t", 1); - DelayCommand(6.0f, NaturalSecondaryWeaponTempCheck(oPC, oPC, GetSpellId(), FloatToInt(fDuration) / 6, "prc_bw0_bite_t")); - } - - // 2004-01-18 mr_bumpkin: Adds special bonuses to those barbarians who are restricted by the - // +12 attribute bonus cap, to make up for them. :) - // The delay is because you have to delay the command if you want the function to be able - // to determine what the ability scores become after adding the bonuses to them. - DelayCommand(0.1, GiveExtraRageBonuses(nCon, StrBeforeBonuses, ConBeforeBonuses, iStr, iCon, nSave, DAMAGE_TYPE_BASE_WEAPON, oPC)); - - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltacid.ncs b/_haks/poa_exp_ability/nw_s1_bltacid.ncs deleted file mode 100644 index c701c56a..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltacid.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltacid.nss b/_haks/poa_exp_ability/nw_s1_bltacid.nss deleted file mode 100644 index ef53a16a..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltacid.nss +++ /dev/null @@ -1,66 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Acid -//:: NW_S1_BltAcid -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); - int nDC = 10 +nCONMod+ (nHD/2); - int nCount = nHD/2; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); - effect eBolt; - - //ankheg - if(GetAppearanceType(oNPC) == APPEARANCE_TYPE_BEETLE_SLICER) - { - nDamage = d4(4); - } - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ACID)); - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ACID); - - //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); - if(nTouch > 0) - { - if(nTouch == 2) - { - nDamage *= 2; - } - //Set damage effect - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ACID); - if(nDamage > 0) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltcharm.ncs b/_haks/poa_exp_ability/nw_s1_bltcharm.ncs deleted file mode 100644 index 34839bd9..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltcharm.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltcharm.nss b/_haks/poa_exp_ability/nw_s1_bltcharm.nss deleted file mode 100644 index df11d653..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltcharm.nss +++ /dev/null @@ -1,47 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Charm -//:: NW_S1_BltCharm -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" -#include "NW_I0_SPELLS" -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - nCount = GetScaledDuration(nCount, oTarget); - - effect eVis = EffectVisualEffect(VFX_IMP_CHARM); - effect eBolt = EffectCharmed(); - eBolt = GetScaledEffect(eBolt, oTarget); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBolt, eDur); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_CHARM)); - //Make a saving throw check - if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_bltchrdr.ncs b/_haks/poa_exp_ability/nw_s1_bltchrdr.ncs deleted file mode 100644 index 24f518b6..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltchrdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltchrdr.nss b/_haks/poa_exp_ability/nw_s1_bltchrdr.nss deleted file mode 100644 index e7345802..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltchrdr.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Charisma Drain -//:: NW_S1_BltChrDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Fortitude save is - needed to avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = nHD / 3; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_CHARISMA)); - //Make a saving throw check - if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) - { - eBolt = EffectAbilityDecrease(ABILITY_CHARISMA, nCount); - eBolt = SupernaturalEffect(eBolt); - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltcold.ncs b/_haks/poa_exp_ability/nw_s1_bltcold.ncs deleted file mode 100644 index b11ea616..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltcold.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltcold.nss b/_haks/poa_exp_ability/nw_s1_bltcold.nss deleted file mode 100644 index 657f0fe6..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltcold.nss +++ /dev/null @@ -1,60 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Cold -//:: NW_S1_BltCold -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = nHD/2; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_COLD)); - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_COLD); - - //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); - if(nTouch > 0) - { - if(nTouch == 2) - { - nDamage *= 2; - } - //Set damage effect - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_COLD); - if(nDamage > 0) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltcondr.ncs b/_haks/poa_exp_ability/nw_s1_bltcondr.ncs deleted file mode 100644 index 6d46b11b..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltcondr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltcondr.nss b/_haks/poa_exp_ability/nw_s1_bltcondr.nss deleted file mode 100644 index 9d85f042..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltcondr.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Constitution Drain -//:: NW_S1_BltConDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Fort save is - needed to avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD /3); - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_CONSTITUTION)); - //Make a saving throw check - if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) - { - eBolt = EffectAbilityDecrease(ABILITY_CONSTITUTION, nCount); - eBolt = SupernaturalEffect(eBolt); - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltconf.ncs b/_haks/poa_exp_ability/nw_s1_bltconf.ncs deleted file mode 100644 index 1bbc7ecc..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltconf.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltconf.nss b/_haks/poa_exp_ability/nw_s1_bltconf.nss deleted file mode 100644 index 5bed7dc0..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltconf.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Confuse -//:: NW_S1_BltConf -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" -#include "NW_I0_SPELLS" -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - nCount = GetScaledDuration(nCount, oTarget); - - effect eVis2 = EffectVisualEffect(VFX_IMP_CONFUSION_S); - effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eBolt = EffectConfused(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBolt, eDur); - eLink = EffectLinkEffects(eLink, eVis); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_CONFUSE)); - //Make a saving throw check - if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_bltdaze.ncs b/_haks/poa_exp_ability/nw_s1_bltdaze.ncs deleted file mode 100644 index aa583e4c..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltdaze.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdaze.nss b/_haks/poa_exp_ability/nw_s1_bltdaze.nss deleted file mode 100644 index 68d15c70..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltdaze.nss +++ /dev/null @@ -1,47 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Daze -//:: NW_S1_BltDaze -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" -#include "NW_I0_SPELLS" -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - nCount = GetScaledDuration(nCount, oTarget); - - effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eBolt = EffectDazed(); - eBolt = GetScaledEffect(eBolt, oTarget); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBolt, eDur); - eLink = EffectLinkEffects(eLink, eVis); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DAZE)); - //Make a saving throw check - if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltdeath.ncs b/_haks/poa_exp_ability/nw_s1_bltdeath.ncs deleted file mode 100644 index 24ddbb0e..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltdeath.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdeath.nss b/_haks/poa_exp_ability/nw_s1_bltdeath.nss deleted file mode 100644 index e2cbcd73..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltdeath.nss +++ /dev/null @@ -1,47 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Death -//:: NW_S1_BltDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - effect eBolt = EffectDeath(); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DEATH)); - //Make a saving throw check - if(TouchAttackRanged(oTarget)) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_bltdexdr.ncs b/_haks/poa_exp_ability/nw_s1_bltdexdr.ncs deleted file mode 100644 index a68efdd9..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltdexdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdexdr.nss b/_haks/poa_exp_ability/nw_s1_bltdexdr.nss deleted file mode 100644 index 4ef34d8b..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltdexdr.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Dexterity Drain -//:: NW_S1_BltDexDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Fort save is - needed to avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_DEXTERITY)); - //Make a saving throw check - if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) - { - eBolt = EffectAbilityDecrease(ABILITY_DEXTERITY, nCount); - eBolt = SupernaturalEffect(eBolt); - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltdisese.ncs b/_haks/poa_exp_ability/nw_s1_bltdisese.ncs deleted file mode 100644 index c81e0cc2..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltdisese.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdisese.nss b/_haks/poa_exp_ability/nw_s1_bltdisese.nss deleted file mode 100644 index 6513a061..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltdisese.nss +++ /dev/null @@ -1,73 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Disease -//:: NW_S1_BltDisease -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to infect - the target with a disease. The disease used - is chosen based upon the racial type of the - caster. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nRacial = MyPRCGetRacialType(oNPC); - int nDisease; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DISEASE)); - - //Here we use the racial type of the attacker to select an - //appropriate disease. - switch (nRacial) - { - case RACIAL_TYPE_VERMIN: - nDisease = DISEASE_VERMIN_MADNESS; - break; - case RACIAL_TYPE_UNDEAD: - nDisease = DISEASE_FILTH_FEVER; - break; - case RACIAL_TYPE_OUTSIDER: - if(GetTag(oNPC) == "NW_SLAADRED") - { - nDisease = DISEASE_RED_SLAAD_EGGS; - } - else - { - nDisease = DISEASE_DEMON_FEVER; - } - break; - case RACIAL_TYPE_MAGICAL_BEAST: - nDisease = DISEASE_SOLDIER_SHAKES; - break; - case RACIAL_TYPE_ABERRATION: - nDisease = DISEASE_BLINDING_SICKNESS; - break; - default: - nDisease = DISEASE_SOLDIER_SHAKES; - break; - } - //Assign effect and chosen disease - effect eBolt = EffectDisease(nDisease); - //Make the ranged touch attack. - if (TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltdomn.ncs b/_haks/poa_exp_ability/nw_s1_bltdomn.ncs deleted file mode 100644 index 1aeb3e8b..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltdomn.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdomn.nss b/_haks/poa_exp_ability/nw_s1_bltdomn.nss deleted file mode 100644 index 5027b454..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltdomn.nss +++ /dev/null @@ -1,53 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Dominated -//:: NW_S1_BltDomn -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - if (nCount == 0) { nCount = 1; } - nCount = GetScaledDuration(nCount, oTarget); - - effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S); - effect eBolt = EffectDominated(); - eBolt = GetScaledEffect(eBolt, oTarget); - effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED); - eBolt = GetScaledEffect(eBolt, oTarget); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBolt, eDur); - eLink = EffectLinkEffects(eLink, eVis2); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DOMINATE)); - - //Make a saving throw check - if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltfire.ncs b/_haks/poa_exp_ability/nw_s1_bltfire.ncs deleted file mode 100644 index fad7accd..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltfire.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltfire.nss b/_haks/poa_exp_ability/nw_s1_bltfire.nss deleted file mode 100644 index 4f7a4236..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltfire.nss +++ /dev/null @@ -1,58 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Fire -//:: NW_S1_BoltFire -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = nHD/2; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_FIRE)); - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE); - //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); - if(nTouch > 0) - { - if(nTouch == 2) - { - nDamage *= 2; - } - //Set damage effect - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); - if(nDamage > 0) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltintdr.ncs b/_haks/poa_exp_ability/nw_s1_bltintdr.ncs deleted file mode 100644 index c776b1cb..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltintdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltintdr.nss b/_haks/poa_exp_ability/nw_s1_bltintdr.nss deleted file mode 100644 index f3ffbad8..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltintdr.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Intelligence Drain -//:: NW_S1_BltIntDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_INTELLIGENCE)); - //Make a saving throw check - if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) - { - eBolt = EffectAbilityDecrease(ABILITY_INTELLIGENCE, nCount); - eBolt = SupernaturalEffect(eBolt); - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltknckd.ncs b/_haks/poa_exp_ability/nw_s1_bltknckd.ncs deleted file mode 100644 index e7bd9f41..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltknckd.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltknckd.nss b/_haks/poa_exp_ability/nw_s1_bltknckd.nss deleted file mode 100644 index 68169647..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltknckd.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Knockdown -//:: NW_S1_BltKnckD -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = nHD/2; - if (nCount == 0) { nCount = 1; } - - effect eVis = EffectVisualEffect(VFX_IMP_SONIC); - effect eBolt = EffectKnockdown(); - effect eDam = EffectDamage(d6(), DAMAGE_TYPE_BLUDGEONING); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_KNOCKDOWN)); - - //Make a saving throw check - if (!/*Reflex Save*/ PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oTarget, RoundsToSeconds(3)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltlightn.ncs b/_haks/poa_exp_ability/nw_s1_bltlightn.ncs deleted file mode 100644 index 7a08b078..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltlightn.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltlightn.nss b/_haks/poa_exp_ability/nw_s1_bltlightn.nss deleted file mode 100644 index 024eafbe..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltlightn.nss +++ /dev/null @@ -1,59 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Lightning -//:: NW_S1_BltLightn -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Does 1d6 per level to a single target. Reflex - save for half -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Aug 10, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = nHD/2; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF,BODY_NODE_HAND); - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_LIGHTNING)); - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ELECTRICITY); - //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); - if(nTouch > 0) - { - if(nTouch == 2) - { - nDamage *= 2; - } - //Set damage effect - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); - if(nDamage > 0) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLightning, oTarget, 1.7); - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltlvldr.ncs b/_haks/poa_exp_ability/nw_s1_bltlvldr.ncs deleted file mode 100644 index 8d76e8c2..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltlvldr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltlvldr.nss b/_haks/poa_exp_ability/nw_s1_bltlvldr.nss deleted file mode 100644 index e3f14cab..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltlvldr.nss +++ /dev/null @@ -1,49 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Level Drain -//:: NW_S1_BltLvlDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = nHD/5; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eBolt = EffectNegativeLevel(1); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_LEVEL_DRAIN)); - - //Make a saving throw check - if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) - { - //eBolt = LEVEL DRAIN EFFECT - eBolt = SupernaturalEffect(eBolt); - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltparal.ncs b/_haks/poa_exp_ability/nw_s1_bltparal.ncs deleted file mode 100644 index 6993eb3d..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltparal.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltparal.nss b/_haks/poa_exp_ability/nw_s1_bltparal.nss deleted file mode 100644 index e4a6b59a..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltparal.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Paralyze -//:: NW_S1_BltParal -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - if (nCount == 0) { nCount = 1; } - nCount = GetScaledDuration(nCount, oTarget); - - effect eVis = EffectVisualEffect(VFX_DUR_PARALYZED); - effect eBolt = EffectParalyze(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBolt, eDur); - eLink = EffectLinkEffects(eLink, eVis); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_PARALYZE)); - //Make a saving throw check - if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltpoison.ncs b/_haks/poa_exp_ability/nw_s1_bltpoison.ncs deleted file mode 100644 index e4066f71..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltpoison.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltpoison.nss b/_haks/poa_exp_ability/nw_s1_bltpoison.nss deleted file mode 100644 index 8a34aca8..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltpoison.nss +++ /dev/null @@ -1,123 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Poison -//:: NW_S1_BltPoison.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Must make a ranged touch attack. If successful - the target is struck down with poison that - scales with level. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 22, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nRacial = MyPRCGetRacialType(OBJECT_SELF); - int nPoison; - - effect ePoison; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_POISON)); - - //Determine the poison type based on the Racial Type and HD - switch (nRacial) - { - case RACIAL_TYPE_OUTSIDER: - if (nHD <= 9) - { - nPoison = POISON_QUASIT_VENOM; - } - else if (nHD > 9 && nHD < 13) - { - nPoison = POISON_BEBILITH_VENOM; - } - else if (nHD >= 13) - { - nPoison = POISON_PIT_FIEND_ICHOR; - } - break; - case RACIAL_TYPE_VERMIN: - if (nHD < 3) - { - nPoison = POISON_TINY_SPIDER_VENOM; - } - else if (nHD <= 3 && nHD < 6) - { - nPoison = POISON_SMALL_SPIDER_VENOM; - } - else if (nHD <= 6 && nHD < 9) - { - nPoison = POISON_MEDIUM_SPIDER_VENOM; - } - else if (nHD <= 9 && nHD < 12) - { - nPoison = POISON_LARGE_SPIDER_VENOM; - } - else if (nHD <= 12 && nHD < 15) - { - nPoison = POISON_HUGE_SPIDER_VENOM; - } - else if (nHD <= 15 && nHD < 18) - { - nPoison = POISON_GARGANTUAN_SPIDER_VENOM; - } - else if (nHD >= 18) - { - nPoison = POISON_COLOSSAL_SPIDER_VENOM; - } - break; - default: - if (nHD < 3) - { - nPoison = POISON_NIGHTSHADE; - } - else if (nHD <= 3 && nHD < 6) - { - nPoison = POISON_BLADE_BANE; - } - else if (nHD <= 6 && nHD < 9) - { - nPoison = POISON_BLOODROOT; - } - else if (nHD <= 9 && nHD < 12) - { - nPoison = POISON_LARGE_SPIDER_VENOM; - } - else if (nHD <= 12 && nHD < 15) - { - nPoison = POISON_LICH_DUST; - } - else if (nHD <= 15 && nHD < 18) - { - nPoison = POISON_DARK_REAVER_POWDER; - } - else if (nHD >= 18 ) - { - nPoison = POISON_BLACK_LOTUS_EXTRACT; - } - - break; - } - //Make a ranged touch attack - if (TouchAttackRanged (oTarget)) - { - ePoison = EffectPoison(nPoison); - //Apply effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_bltshards.ncs b/_haks/poa_exp_ability/nw_s1_bltshards.ncs deleted file mode 100644 index ad8c7210..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltshards.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltshards.nss b/_haks/poa_exp_ability/nw_s1_bltshards.nss deleted file mode 100644 index 1b96e2bc..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltshards.nss +++ /dev/null @@ -1,58 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Shards -//:: NW_S1_BltShard -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_SHARDS)); - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC); - - //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); - if(nTouch > 0) - { - if(nTouch == 2) - { - nDamage *= 2; - } - //Set damage effect - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_PIERCING, DAMAGE_POWER_PLUS_ONE); - if(nDamage > 0) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltslow.ncs b/_haks/poa_exp_ability/nw_s1_bltslow.ncs deleted file mode 100644 index 259d72a0..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltslow.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltslow.nss b/_haks/poa_exp_ability/nw_s1_bltslow.nss deleted file mode 100644 index bf4813a1..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltslow.nss +++ /dev/null @@ -1,47 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Slow -//:: NW_S1_BltSlow -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex save is - needed to or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: June 18 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - if (nCount == 0) { nCount = 1; } - - effect eVis = EffectVisualEffect(VFX_IMP_SLOW); - effect eBolt = EffectSlow(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBolt, eDur); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_SLOW)); - //Make a saving throw check - if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltstrdr.ncs b/_haks/poa_exp_ability/nw_s1_bltstrdr.ncs deleted file mode 100644 index a41dee28..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltstrdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltstrdr.nss b/_haks/poa_exp_ability/nw_s1_bltstrdr.nss deleted file mode 100644 index dd03161d..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltstrdr.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Strength Drain -//:: NW_S1_BltStrDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Fort save is - needed to avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_STRENGTH)); - //Make a saving throw check - if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) - { - eBolt = EffectAbilityDecrease(ABILITY_STRENGTH, nCount); - eBolt = SupernaturalEffect(eBolt); - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_bltstun.ncs b/_haks/poa_exp_ability/nw_s1_bltstun.ncs deleted file mode 100644 index 39b7029d..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltstun.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltstun.nss b/_haks/poa_exp_ability/nw_s1_bltstun.nss deleted file mode 100644 index 1d770089..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltstun.nss +++ /dev/null @@ -1,50 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Stun -//:: NW_S1_BltStun -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD + 1) / 2; - if (nCount == 0) { nCount = 1; } - nCount = GetScaledDuration(nCount, oTarget); - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_STUN); - effect eBolt = EffectStunned(); - eBolt = GetScaledEffect(eBolt, oTarget); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBolt, eDur); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_STUN)); - //Make a saving throw check - if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltweb.ncs b/_haks/poa_exp_ability/nw_s1_bltweb.ncs deleted file mode 100644 index 822265a3..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltweb.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltweb.nss b/_haks/poa_exp_ability/nw_s1_bltweb.nss deleted file mode 100644 index 9ed210a0..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltweb.nss +++ /dev/null @@ -1,44 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Web -//:: NW_S1_BltWeb -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Glues a single target to the ground with - sticky strands of webbing. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 28, 2002 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); - int nDC = 10 +nCONMod+ (nHD/2); - int nCount = 1 + (nHD /2); - if (nCount == 0) { nCount = 1; } - - effect eVis = EffectVisualEffect(VFX_DUR_WEB); - effect eStick = EffectEntangle(); - effect eLink = EffectLinkEffects(eVis, eStick); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_WEB)); - //Make a saving throw check - if (!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC) && TouchAttackRanged(oTarget)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_bltwisdr.ncs b/_haks/poa_exp_ability/nw_s1_bltwisdr.ncs deleted file mode 100644 index fbaf776e..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_bltwisdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_bltwisdr.nss b/_haks/poa_exp_ability/nw_s1_bltwisdr.nss deleted file mode 100644 index 49643c08..00000000 --- a/_haks/poa_exp_ability/nw_s1_bltwisdr.nss +++ /dev/null @@ -1,48 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolt: Wisdom Drain -//:: NW_S1_BltWisDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature must make a ranged touch attack to hit - the intended target. Fort save is - needed to avoid effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nCount = (nHD /3); - if (nCount == 0) { nCount = 1; } - int nDamage = d6(nCount); - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eBolt; - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_WISDOM)); - //Make a saving throw check - if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) - { - eBolt = EffectAbilityDecrease(ABILITY_WISDOM, nCount); - eBolt = SupernaturalEffect(eBolt); - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_coneacid.ncs b/_haks/poa_exp_ability/nw_s1_coneacid.ncs deleted file mode 100644 index e3f0170f..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_coneacid.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_coneacid.nss b/_haks/poa_exp_ability/nw_s1_coneacid.nss deleted file mode 100644 index 2ab7dcfc..00000000 --- a/_haks/poa_exp_ability/nw_s1_coneacid.nss +++ /dev/null @@ -1,76 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cone: Acid -//:: NW_S1_ConeAcid -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A cone of damage eminated from the monster. Does - a set amount of damage based upon the creatures HD - and can be halved with a Reflex Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - int nLoop = nHD / 3; - - float fDelay; - - if(nLoop == 0) - { - nLoop = 1; - } - - //Calculate the damage - for (nLoop; nLoop > 0; nLoop--) - { - nDamage = nDamage + d6(2); - } - location lTargetLocation = GetSpellTargetLocation(); - - effect eCone; - effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); - - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - //Get first target in spell area - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_ACID)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ACID); - //Set damage effect - eCone = EffectDamage(nDamage, DAMAGE_TYPE_ACID); - if(nDamage > 0) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_conecold.ncs b/_haks/poa_exp_ability/nw_s1_conecold.ncs deleted file mode 100644 index 01f3ccfa..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_conecold.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_conecold.nss b/_haks/poa_exp_ability/nw_s1_conecold.nss deleted file mode 100644 index 24cc011b..00000000 --- a/_haks/poa_exp_ability/nw_s1_conecold.nss +++ /dev/null @@ -1,76 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cone: Cold -//:: NW_S1_ConeCold -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A cone of damage eminated from the monster. Does - a set amount of damage based upon the creatures HD - and can be halved with a Reflex Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - int nLoop = nHD / 3; - - float fDelay; - - if(nLoop == 0) - { - nLoop = 1; - } - - //Calculate the damage - for (nLoop; nLoop > 0; nLoop--) - { - nDamage = nDamage + d6(2); - } - location lTargetLocation = GetSpellTargetLocation(); - - effect eCone; - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - //Get first target in spell area - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_COLD)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD); - //Set damage effect - eCone = EffectDamage(nDamage, DAMAGE_TYPE_COLD); - if(nDamage > 0) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_conedisea.ncs b/_haks/poa_exp_ability/nw_s1_conedisea.ncs deleted file mode 100644 index 7ddb012d..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_conedisea.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_conedisea.nss b/_haks/poa_exp_ability/nw_s1_conedisea.nss deleted file mode 100644 index 9abedbb0..00000000 --- a/_haks/poa_exp_ability/nw_s1_conedisea.nss +++ /dev/null @@ -1,99 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cone: Disease -//:: NW_S1_ConeDisea -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature spits out a cone of disease that cannot - be avoided unless a Reflex save is made. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 22, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nRacial = MyPRCGetRacialType(oNPC); - int nDisease; - - location lTargetLocation = GetSpellTargetLocation(); - - float fDelay; - - effect eCone = EffectDisease(nDisease); - effect eVis = EffectVisualEffect(VFX_IMP_DISEASE_S); - - - //Determine the disease type based on the Racial Type and HD - switch (nRacial) - { - case RACIAL_TYPE_OUTSIDER: - nDisease = DISEASE_DEMON_FEVER; - break; - case RACIAL_TYPE_VERMIN: - nDisease = DISEASE_VERMIN_MADNESS; - break; - case RACIAL_TYPE_UNDEAD: - if(nHD <= 3) - { - nDisease = DISEASE_ZOMBIE_CREEP; - } - else if (nHD > 3 && nHD <= 10) - { - nDisease = DISEASE_GHOUL_ROT; - } - else if(nHD > 10) - { - nDisease = DISEASE_MUMMY_ROT; - } - default: - if(nHD <= 3) - { - nDisease = DISEASE_MINDFIRE; - } - else if (nHD > 3 && nHD <= 10) - { - nDisease = DISEASE_RED_ACHE; - } - else if(nHD > 10) - { - nDisease = DISEASE_SHAKES; - } - - - break; - } - - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - //Get first target in spell area - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_DISEASE)); - //Get the delay time - fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); - - } -} - - - diff --git a/_haks/poa_exp_ability/nw_s1_coneelec.ncs b/_haks/poa_exp_ability/nw_s1_coneelec.ncs deleted file mode 100644 index c2ca5c55..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_coneelec.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_coneelec.nss b/_haks/poa_exp_ability/nw_s1_coneelec.nss deleted file mode 100644 index a4fa75ba..00000000 --- a/_haks/poa_exp_ability/nw_s1_coneelec.nss +++ /dev/null @@ -1,78 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cone: Lightning -//:: NW_S1_ConeElec -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A cone of damage eminates from the monster. Does - a set amount of damage based upon the creatures HD - and can be halved with a Reflex Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - int nLoop = nHD / 3; - - float fDelay; - - if(nLoop == 0) - { - nLoop = 1; - } - - //Calculate the damage - for (nLoop; nLoop > 0; nLoop--) - { - nDamage = nDamage + d6(2); - } - location lTargetLocation = GetSpellTargetLocation(); - - effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_HAND); - effect eCone; - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - //Get first target in spell area - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_LIGHTNING)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY); - //Set damage effect - eCone = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); - if(nDamage > 0) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_conesonic.ncs b/_haks/poa_exp_ability/nw_s1_conesonic.ncs deleted file mode 100644 index 6907a9cc..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_conesonic.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_conesonic.nss b/_haks/poa_exp_ability/nw_s1_conesonic.nss deleted file mode 100644 index 79c1d466..00000000 --- a/_haks/poa_exp_ability/nw_s1_conesonic.nss +++ /dev/null @@ -1,75 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cone: Sonic -//:: NW_S1_ConeSonic -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A cone of damage eminated from the monster. Does - a set amount of damage based upon the creatures HD - and can be halved with a Reflex Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - int nLoop = nHD / 3; - - float fDelay; - - if(nLoop == 0) - { - nLoop = 1; - } - - //Calculate the damage - for (nLoop; nLoop > 0; nLoop--) - { - nDamage = nDamage + d6(2); - } - location lTargetLocation = GetSpellTargetLocation(); - - effect eCone; - effect eVis = EffectVisualEffect(VFX_IMP_SONIC); - - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - //Get first target in spell area - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_SONIC)); - //Determine effect delay - fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,DAMAGE_TYPE_SONIC); - //Set damage effect - eCone = EffectDamage(nDamage, DAMAGE_TYPE_SONIC); - if(nDamage > 0) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_dragacid.ncs b/_haks/poa_exp_ability/nw_s1_dragacid.ncs deleted file mode 100644 index 847618ea..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragacid.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragacid.nss b/_haks/poa_exp_ability/nw_s1_dragacid.nss deleted file mode 100644 index 94cbc97c..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragacid.nss +++ /dev/null @@ -1,253 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Acid -//:: NW_S1_DragAcid -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper damage and DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nDamageDice; - struct breath AcidBreath; - - //Use the HD of the creature to determine damage and save DC - if (nAge <= 6) //Wyrmling - { - nDamageDice = 2; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nDamageDice = 4; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nDamageDice = 6; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nDamageDice = 8; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nDamageDice = 10; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nDamageDice = 12; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nDamageDice = 14; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nDamageDice = 16; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nDamageDice = 18; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nDamageDice = 20; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nDamageDice = 22; - } - else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nDamageDice = 24; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nDamageDice = 26; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nDamageDice = 28; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nDamageDice = 30; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nDamageDice = 32; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nDamageDice = 34; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nDamageDice = 36; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nDamageDice = 38; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nDamageDice = 40; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nDamageDice = 42; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nDamageDice = 44; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nDamageDice = 46; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nDamageDice = 48; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nDamageDice = 50; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nDamageDice = 52; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nDamageDice = 54; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nDamageDice = 56; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nDamageDice = 58; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nDamageDice = 60; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nDamageDice = 62; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nDamageDice = 64; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nDamageDice = 66; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nDamageDice = 68; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nDamageDice = 70; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nDamageDice = 72; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nDamageDice = 74; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nDamageDice = 76; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nDamageDice = 78; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nDamageDice = 80; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nDamageDice = 82; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nDamageDice = 84; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nDamageDice = 86; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nDamageDice = 88; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nDamageDice = 90; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nDamageDice = 92; - } - else if (nAge > 178 ) //Great Wyrm - { - nDamageDice = 94; - } - - //create the breath - 40' ~ 14m? - should set it based on size later - //was a cone originally, changed to line to match PnP - AcidBreath = CreateBreath(OBJECT_SELF, TRUE, 80.0, DAMAGE_TYPE_ACID, 4, nDamageDice, ABILITY_CONSTITUTION, nDCBoost); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(AcidBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(AcidBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(AcidBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_dragcold.ncs b/_haks/poa_exp_ability/nw_s1_dragcold.ncs deleted file mode 100644 index b111b11e..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragcold.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragcold.nss b/_haks/poa_exp_ability/nw_s1_dragcold.nss deleted file mode 100644 index 8ea150d3..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragcold.nss +++ /dev/null @@ -1,251 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Cold -//:: NW_S1_DragCold -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper damage and DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nDamageDice; - struct breath ColdBreath; - - //Use the HD of the creature to determine damage and save DC - if (nAge <= 6) //Wyrmling - { - nDamageDice = 1; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nDamageDice = 2; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nDamageDice = 3; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nDamageDice = 4; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nDamageDice = 5; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nDamageDice = 6; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nDamageDice = 7; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nDamageDice = 8; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nDamageDice = 9; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nDamageDice = 10; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nDamageDice = 11; - } -else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nDamageDice = 12; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nDamageDice = 13; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nDamageDice = 14; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nDamageDice = 15; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nDamageDice = 16; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nDamageDice = 17; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nDamageDice = 18; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nDamageDice = 19; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nDamageDice = 20; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nDamageDice = 21; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nDamageDice = 22; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nDamageDice = 23; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nDamageDice = 24; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nDamageDice = 25; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nDamageDice = 26; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nDamageDice = 27; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nDamageDice = 28; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nDamageDice = 29; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nDamageDice = 30; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nDamageDice = 31; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nDamageDice = 32; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nDamageDice = 33; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nDamageDice = 34; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nDamageDice = 35; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nDamageDice = 36; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nDamageDice = 37; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nDamageDice = 38; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nDamageDice = 39; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nDamageDice = 40; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nDamageDice = 41; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nDamageDice = 42; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nDamageDice = 43; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nDamageDice = 44; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nDamageDice = 45; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nDamageDice = 46; - } - else if (nAge > 178 ) //Great Wyrm - { - nDamageDice = 47; - } - //create the breath - 40' ~ 14m? - should set it based on size later - ColdBreath = CreateBreath(OBJECT_SELF, FALSE, 40.0, DAMAGE_TYPE_COLD, 6, nDamageDice, ABILITY_CONSTITUTION, nDCBoost); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(ColdBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(ColdBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(ColdBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_dragfear.ncs b/_haks/poa_exp_ability/nw_s1_dragfear.ncs deleted file mode 100644 index 04d9a311..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragfear.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragfear.nss b/_haks/poa_exp_ability/nw_s1_dragfear.nss deleted file mode 100644 index f95e3975..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragfear.nss +++ /dev/null @@ -1,119 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Fear -//:: NW_S1_DragFear -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" -void main() -{ - //if (WildMagicOverride()) { return; } - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nCount; - int nDC; - float fDelay; - object oTarget; - effect eBreath = EffectFrightened(); - effect eFear = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); - effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBreath, eDur); - eLink = EffectLinkEffects(eLink, eFear); - - //Determine the duration and save DC - if (nAge <= 6) //Wyrmling - { - nDC = 13; - nCount = 1; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nDC = 15; - nCount = 2; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nDC = 17; - nCount = 3; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nDC = 19; - nCount = 4; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nDC = 21; - nCount = 5; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nDC = 24; - nCount = 6; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nDC = 27; - nCount = 7; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nDC = 28; - nCount = 8; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nDC = 30; - nCount = 9; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nDC = 32; - nCount = 10; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nDC = 34; - nCount = 11; - } - else if (nAge > 37) //Great Wyrm - { - nDC = 37; - nCount = 12; - } - PlayDragonBattleCry(); - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); - //Get first target in spell area - while(GetIsObjectValid(oTarget)) - { - if(oTarget != OBJECT_SELF && !GetIsReactionTypeFriendly(oTarget)) - { - nCount = GetScaledDuration(nCount, oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_FEAR)); - //Determine the effect delay time - fDelay = GetDistanceBetween(oTarget, OBJECT_SELF)/20; - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, OBJECT_SELF, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount))); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_dragfeara.ncs b/_haks/poa_exp_ability/nw_s1_dragfeara.ncs deleted file mode 100644 index 8308977e..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragfeara.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragfeara.nss b/_haks/poa_exp_ability/nw_s1_dragfeara.nss deleted file mode 100644 index 2bb50095..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragfeara.nss +++ /dev/null @@ -1,45 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Aura of Fear On Enter -//:: NW_S1_DragFearA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Upon entering the aura of the creature the player - must make a will save or be struck with fear because - of the creatures presence. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" -void main() -{ - //Declare major variables - object oTarget = GetEnteringObject(); - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); - effect eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); - effect eDur2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eFear = EffectFrightened(); - effect eLink = EffectLinkEffects(eFear, eDur); - eLink = EffectLinkEffects(eLink, eDur2); - - int nHD = GetHitDice(GetAreaOfEffectCreator()); - int nDC = 10 + GetHitDice(GetAreaOfEffectCreator())/3; - int nDuration = GetScaledDuration(nHD, oTarget); - if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_FEAR)); - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_dragfire.ncs b/_haks/poa_exp_ability/nw_s1_dragfire.ncs deleted file mode 100644 index 61bccc31..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragfire.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragfire.nss b/_haks/poa_exp_ability/nw_s1_dragfire.nss deleted file mode 100644 index efae0a6e..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragfire.nss +++ /dev/null @@ -1,251 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Fire -//:: NW_S1_DragFire -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper damage and DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nDamageDice; - struct breath FireBreath; - - //Use the HD of the creature to determine damage and save DC - if (nAge <= 6) //Wyrmling - { - nDamageDice = 2; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nDamageDice = 4; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nDamageDice = 6; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nDamageDice = 8; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nDamageDice = 10; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nDamageDice = 12; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nDamageDice = 14; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nDamageDice = 16; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nDamageDice = 18; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nDamageDice = 20; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nDamageDice = 22; - } - else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nDamageDice = 24; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nDamageDice = 26; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nDamageDice = 28; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nDamageDice = 30; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nDamageDice = 32; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nDamageDice = 34; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nDamageDice = 36; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nDamageDice = 38; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nDamageDice = 40; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nDamageDice = 42; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nDamageDice = 44; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nDamageDice = 46; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nDamageDice = 48; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nDamageDice = 50; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nDamageDice = 52; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nDamageDice = 54; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nDamageDice = 56; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nDamageDice = 58; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nDamageDice = 60; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nDamageDice = 62; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nDamageDice = 64; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nDamageDice = 66; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nDamageDice = 68; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nDamageDice = 70; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nDamageDice = 72; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nDamageDice = 74; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nDamageDice = 76; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nDamageDice = 78; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nDamageDice = 80; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nDamageDice = 82; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nDamageDice = 84; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nDamageDice = 86; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nDamageDice = 88; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nDamageDice = 90; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nDamageDice = 92; - } - else if (nAge > 178 ) //Great Wyrm - { - nDamageDice = 94; - } - //create the breath - 40' ~ 14m? - should set it based on size later - FireBreath = CreateBreath(OBJECT_SELF, FALSE, 40.0, DAMAGE_TYPE_FIRE, 10, nDamageDice, ABILITY_CONSTITUTION, nDCBoost); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(FireBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(FireBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(FireBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_draggas.ncs b/_haks/poa_exp_ability/nw_s1_draggas.ncs deleted file mode 100644 index 79be2879..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_draggas.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_draggas.nss b/_haks/poa_exp_ability/nw_s1_draggas.nss deleted file mode 100644 index 4769ac2e..00000000 --- a/_haks/poa_exp_ability/nw_s1_draggas.nss +++ /dev/null @@ -1,251 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Gas Cloud -//:: NW_S1_DragGas -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper damage and DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nDamageDice; - struct breath GasBreath; - - //Use the HD of the creature to determine damage and save DC - if (nAge <= 6) //Wyrmling - { - nDamageDice = 2; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nDamageDice = 4; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nDamageDice = 6; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nDamageDice = 8; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nDamageDice = 10; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nDamageDice = 12; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nDamageDice = 14; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nDamageDice = 16; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nDamageDice = 18; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nDamageDice = 20; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nDamageDice = 22; - } - else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nDamageDice = 24; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nDamageDice = 26; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nDamageDice = 28; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nDamageDice = 30; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nDamageDice = 32; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nDamageDice = 34; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nDamageDice = 36; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nDamageDice = 38; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nDamageDice = 40; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nDamageDice = 42; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nDamageDice = 44; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nDamageDice = 46; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nDamageDice = 48; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nDamageDice = 50; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nDamageDice = 52; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nDamageDice = 54; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nDamageDice = 56; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nDamageDice = 58; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nDamageDice = 60; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nDamageDice = 62; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nDamageDice = 64; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nDamageDice = 66; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nDamageDice = 68; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nDamageDice = 70; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nDamageDice = 72; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nDamageDice = 74; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nDamageDice = 76; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nDamageDice = 78; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nDamageDice = 80; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nDamageDice = 82; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nDamageDice = 84; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nDamageDice = 86; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nDamageDice = 88; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nDamageDice = 90; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nDamageDice = 92; - } - else if (nAge > 178 ) //Great Wyrm - { - nDamageDice = 94; - } - //create the breath - 40' ~ 14m? - should set it based on size later - GasBreath = CreateBreath(OBJECT_SELF, FALSE, 40.0, DAMAGE_TYPE_ACID, 6, nDamageDice, ABILITY_CONSTITUTION, nDCBoost, BREATH_TOPAZ); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(GasBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(GasBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(GasBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_draglight.ncs b/_haks/poa_exp_ability/nw_s1_draglight.ncs deleted file mode 100644 index 4c17f8f5..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_draglight.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_draglight.nss b/_haks/poa_exp_ability/nw_s1_draglight.nss deleted file mode 100644 index c283a417..00000000 --- a/_haks/poa_exp_ability/nw_s1_draglight.nss +++ /dev/null @@ -1,252 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Lightning -//:: NW_S1_DragLightn -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper damage and DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nDamageDice; - struct breath ElecBreath; - - //Use the HD of the creature to determine damage and save DC - if (nAge <= 6) //Wyrmling - { - nDamageDice = 2; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nDamageDice = 4; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nDamageDice = 6; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nDamageDice = 8; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nDamageDice = 10; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nDamageDice = 12; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nDamageDice = 14; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nDamageDice = 16; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nDamageDice = 18; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nDamageDice = 20; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nDamageDice = 22; - } - else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nDamageDice = 24; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nDamageDice = 26; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nDamageDice = 28; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nDamageDice = 30; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nDamageDice = 32; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nDamageDice = 34; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nDamageDice = 36; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nDamageDice = 38; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nDamageDice = 40; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nDamageDice = 42; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nDamageDice = 44; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nDamageDice = 46; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nDamageDice = 48; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nDamageDice = 50; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nDamageDice = 52; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nDamageDice = 54; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nDamageDice = 56; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nDamageDice = 58; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nDamageDice = 60; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nDamageDice = 62; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nDamageDice = 64; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nDamageDice = 66; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nDamageDice = 68; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nDamageDice = 70; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nDamageDice = 72; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nDamageDice = 74; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nDamageDice = 76; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nDamageDice = 78; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nDamageDice = 80; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nDamageDice = 82; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nDamageDice = 84; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nDamageDice = 86; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nDamageDice = 88; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nDamageDice = 90; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nDamageDice = 92; - } - else if (nAge > 178 ) //Great Wyrm - { - nDamageDice = 94; - } - //create the breath - 40' ~ 14m? - should set it based on size later - //was implemented using a cone before, changed to line - ElecBreath = CreateBreath(OBJECT_SELF, TRUE, 80.0, DAMAGE_TYPE_ELECTRICAL, 8, nDamageDice, ABILITY_CONSTITUTION, nDCBoost); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(ElecBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(ElecBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(ElecBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_dragparal.ncs b/_haks/poa_exp_ability/nw_s1_dragparal.ncs deleted file mode 100644 index 77ebc200..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragparal.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragparal.nss b/_haks/poa_exp_ability/nw_s1_dragparal.nss deleted file mode 100644 index 03ae3caa..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragparal.nss +++ /dev/null @@ -1,251 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Paralyze -//:: NW_S1_DragParal -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nCount = d6(); - struct breath ParalBreath; - - //Determine save DC and duration of effect - if (nAge <= 6) //Wyrmling - { - nCount += 1; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nCount += 2; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nCount += 3; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nCount += 4; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nCount += 5; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nCount += 6; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nCount += 7; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nCount += 8; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nCount += 9; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nCount += 10; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nCount += 11; - } -else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nCount += 12; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nCount += 13; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nCount += 14; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nCount += 15; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nCount += 16; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nCount += 17; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nCount += 18; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nCount += 19; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nCount += 20; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nCount += 21; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nCount += 22; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nCount += 23; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nCount += 24; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nCount += 25; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nCount += 26; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nCount += 27; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nCount += 28; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nCount += 29; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nCount += 30; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nCount += 31; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nCount += 32; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nCount += 33; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nCount += 34; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nCount += 35; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nCount += 36; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nCount += 37; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nCount += 38; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nCount += 39; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nCount += 40; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nCount += 41; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nCount += 42; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nCount += 43; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nCount += 44; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nCount += 45; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nCount += 46; - } - else if (nAge > 178 ) //Great Wyrm - { - nCount += 47; - } - //create the breath - 40' ~ 14m? - should set it based on size later - ParalBreath = CreateBreath(OBJECT_SELF, FALSE, 40.0, -1, 10, nCount, ABILITY_CONSTITUTION, nDCBoost, BREATH_PARALYZE); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(ParalBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(ParalBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(ParalBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_dragsleep.ncs b/_haks/poa_exp_ability/nw_s1_dragsleep.ncs deleted file mode 100644 index 7ea032b1..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragsleep.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragsleep.nss b/_haks/poa_exp_ability/nw_s1_dragsleep.nss deleted file mode 100644 index 249f6be7..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragsleep.nss +++ /dev/null @@ -1,252 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Sleep -//:: NW_S1_DragSleep -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nCount = d6(); - struct breath SleepBreath; - - //Determine save DC and duration of effect - if (nAge <= 6) //Wyrmling - { - nCount += 1; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nCount += 2; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nCount += 3; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nCount += 4; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nCount += 5; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nCount += 6; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nCount += 7; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nCount += 8; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nCount += 9; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nCount += 10; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nCount += 11; - } - -else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nCount += 12; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nCount += 13; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nCount += 14; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nCount += 15; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nCount += 16; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nCount += 17; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nCount += 18; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nCount += 19; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nCount += 20; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nCount += 21; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nCount += 22; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nCount += 23; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nCount += 24; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nCount += 25; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nCount += 26; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nCount += 27; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nCount += 28; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nCount += 29; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nCount += 30; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nCount += 31; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nCount += 32; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nCount += 33; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nCount += 34; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nCount += 35; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nCount += 36; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nCount += 37; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nCount += 38; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nCount += 39; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nCount += 40; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nCount += 41; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nCount += 42; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nCount += 43; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nCount += 44; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nCount += 45; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nCount += 46; - } - else if (nAge > 178 ) //Great Wyrm - { - nCount += 47; - } - //create the breath - 40' ~ 14m? - should set it based on size later - SleepBreath = CreateBreath(OBJECT_SELF, FALSE, 40.0, -1, 10, nCount, ABILITY_CONSTITUTION, nDCBoost, BREATH_SLEEP); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(SleepBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(SleepBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(SleepBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_dragslow.ncs b/_haks/poa_exp_ability/nw_s1_dragslow.ncs deleted file mode 100644 index c50139c6..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragslow.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragslow.nss b/_haks/poa_exp_ability/nw_s1_dragslow.nss deleted file mode 100644 index 1263d0c6..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragslow.nss +++ /dev/null @@ -1,251 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Slow -//:: NW_S1_DragSlow -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Aug 13, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nCount = d6(); - struct breath SlowBreath; - - //Determine save DC and duration of effect - if (nAge <= 6) //Wyrmling - { - nCount += 1; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nCount += 2; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nCount += 3; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nCount += 4; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nCount += 5; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nCount += 6; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nCount += 7; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nCount += 8; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nCount += 9; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nCount += 10; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nCount += 11; - } -else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nCount += 12; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nCount += 13; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nCount += 14; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nCount += 15; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nCount += 16; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nCount += 17; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nCount += 18; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nCount += 19; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nCount += 20; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nCount += 21; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nCount += 22; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nCount += 23; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nCount += 24; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nCount += 25; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nCount += 26; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nCount += 27; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nCount += 28; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nCount += 29; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nCount += 30; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nCount += 31; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nCount += 32; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nCount += 33; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nCount += 34; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nCount += 35; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nCount += 36; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nCount += 37; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nCount += 38; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nCount += 39; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nCount += 40; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nCount += 41; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nCount += 42; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nCount += 43; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nCount += 44; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nCount += 45; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nCount += 46; - } - else if (nAge > 178 ) //Great Wyrm - { - nCount += 47; - } - //create the breath - 40' ~ 14m? - should set it based on size later - SlowBreath = CreateBreath(OBJECT_SELF, FALSE, 40.0, -1, 10, nCount, ABILITY_CONSTITUTION, nDCBoost, BREATH_SLOW); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(SlowBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(SlowBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(SlowBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_dragweak.ncs b/_haks/poa_exp_ability/nw_s1_dragweak.ncs deleted file mode 100644 index 9171cebd..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_dragweak.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_dragweak.nss b/_haks/poa_exp_ability/nw_s1_dragweak.nss deleted file mode 100644 index 06209a53..00000000 --- a/_haks/poa_exp_ability/nw_s1_dragweak.nss +++ /dev/null @@ -1,254 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Weaken -//:: NW_S1_DragWeak -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper damage and DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nDamage = 0; - struct breath WeakBreath; - - //Determine save DC and ability damage - if (nAge <= 6) //Wyrmling - { - nDamage += 1; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nDamage += 2; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nDamage += 3; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nDamage += 4; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nDamage += 5; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nDamage += 6; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nDamage += 7; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nDamage += 8; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nDamage += 9; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nDamage += 10; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nDamage += 11; - } - else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nDamage += 12; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nDamage += 13; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nDamage += 14; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nDamage += 15; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nDamage += 16; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nDamage += 17; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nDamage += 18; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nDamage += 19; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nDamage += 20; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nDamage += 21; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nDamage += 22; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nDamage += 23; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nDamage += 24; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nDamage += 25; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nDamage += 26; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nDamage += 27; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nDamage += 28; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nDamage += 29; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nDamage += 30; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nDamage += 31; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nDamage += 32; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nDamage += 33; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nDamage += 34; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nDamage += 35; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nDamage += 36; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nDamage += 37; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nDamage += 38; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nDamage += 39; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nDamage += 40; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nDamage += 41; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nDamage += 42; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nDamage += 43; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nDamage += 44; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nDamage += 45; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nDamage += 46; - } - else if (nAge > 178 ) //Great Wyrm - { - nDamage += 47; - } - - - - //create the breath - 40' ~ 14m? - should set it based on size later - WeakBreath = CreateBreath(OBJECT_SELF, FALSE, 40.0, -1, 10, nDamage, ABILITY_CONSTITUTION, nDCBoost, BREATH_WEAKENING); - - //Apply the breath - PRCPlayDragonBattleCry(); - ApplyBreath(WeakBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(WeakBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(WeakBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} - - diff --git a/_haks/poa_exp_ability/nw_s1_feroc3.ncs b/_haks/poa_exp_ability/nw_s1_feroc3.ncs deleted file mode 100644 index dfb32e00..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_feroc3.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_feroc3.nss b/_haks/poa_exp_ability/nw_s1_feroc3.nss deleted file mode 100644 index 58a44cbb..00000000 --- a/_haks/poa_exp_ability/nw_s1_feroc3.nss +++ /dev/null @@ -1,41 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Ferocity 3 -//:: NW_S1_Feroc3 -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - The Dex and Str of the target increases -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Aug 13, 2001 -//::////////////////////////////////////////////// - -void main() -{ -//:: Declare major variables - object oNPC = OBJECT_SELF; - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION); //:: Determine the duration by getting the con modifier - int nIncrease = 9; - int nDuration = 1 + nCONMod; - if(nDuration == 0) { nDuration = 1; } - - - effect eDex = EffectAbilityIncrease(ABILITY_DEXTERITY, nIncrease); - effect eStr = EffectAbilityIncrease(ABILITY_STRENGTH, nIncrease); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eLink = EffectLinkEffects(eStr, eDex); - eLink = EffectLinkEffects(eLink, eDur); - eLink = ExtraordinaryEffect(eLink); //:: Make effect extraordinary - - //effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE); - SignalEvent(oNPC, EventSpellCastAt(oNPC, SPELLABILITY_FEROCITY_3, FALSE)); - if (nCONMod > 0) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oNPC, RoundsToSeconds(nDuration)); - //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF) ; - } -} diff --git a/_haks/poa_exp_ability/nw_s1_gazechaos.ncs b/_haks/poa_exp_ability/nw_s1_gazechaos.ncs deleted file mode 100644 index 55423e9d..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazechaos.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazechaos.nss b/_haks/poa_exp_ability/nw_s1_gazechaos.nss deleted file mode 100644 index 950ce623..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazechaos.nss +++ /dev/null @@ -1,69 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Destroy Law -//:: NW_S1_GazeChaos -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save and are of Lawful alignment. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 13, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - if(GetAlignmentLawChaos(oTarget) == ALIGNMENT_LAWFUL) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DESTROY_LAW)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) - { - //Apply the VFX impact and effects - //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_gazecharm.ncs b/_haks/poa_exp_ability/nw_s1_gazecharm.ncs deleted file mode 100644 index 2dc6a8af..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazecharm.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazecharm.nss b/_haks/poa_exp_ability/nw_s1_gazecharm.nss deleted file mode 100644 index e4a06224..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazecharm.nss +++ /dev/null @@ -1,76 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Charm -//:: NW_S1_GazeCharm -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - if(nDuration == 0) { nDuration = 1; } - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectCharmed(); - - effect eVis = EffectVisualEffect(VFX_IMP_CHARM); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); - effect eLink = EffectLinkEffects(eDur, eVisDur); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) - { - nDuration = GetScaledDuration(nDuration, oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_CHARM)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) - { - eGaze = GetScaledEffect(eGaze, oTarget); - eLink = EffectLinkEffects(eLink, eGaze); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_gazeconfu.ncs b/_haks/poa_exp_ability/nw_s1_gazeconfu.ncs deleted file mode 100644 index 32e53d64..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazeconfu.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazeconfu.nss b/_haks/poa_exp_ability/nw_s1_gazeconfu.nss deleted file mode 100644 index 4add32ff..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazeconfu.nss +++ /dev/null @@ -1,77 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Confusion -//:: NW_S1_GazeConfu -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - if(nDuration == 0) { nDuration = 1; } - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectConfused(); - effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eLink = EffectLinkEffects(eDur, eVisDur); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - if(oTarget != oNPC) - { - nDuration = GetScaledDuration(nDuration , oTarget); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_CONFUSION)); - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) - { - eGaze = GetScaledEffect(eGaze, oTarget); - eLink = EffectLinkEffects(eLink, eGaze); - - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_gazedaze.ncs b/_haks/poa_exp_ability/nw_s1_gazedaze.ncs deleted file mode 100644 index aacdb316..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazedaze.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazedaze.nss b/_haks/poa_exp_ability/nw_s1_gazedaze.nss deleted file mode 100644 index f0a8c2dd..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazedaze.nss +++ /dev/null @@ -1,74 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Daze -//:: NW_S1_GazeDaze -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - if(nDuration == 0) { nDuration = 1; } - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectDazed(); - effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eLink = EffectLinkEffects(eGaze, eVisDur); - eLink = EffectLinkEffects(eLink, eDur); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - nDuration = GetScaledDuration(nDuration , oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DAZE)); - - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_gazedeath.ncs b/_haks/poa_exp_ability/nw_s1_gazedeath.ncs deleted file mode 100644 index c46a0cb2..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazedeath.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazedeath.nss b/_haks/poa_exp_ability/nw_s1_gazedeath.nss deleted file mode 100644 index 635ee53b..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazedeath.nss +++ /dev/null @@ -1,66 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Death -//:: NW_S1_GazeDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) || oTarget != oNPC) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DEATH)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_gazedomn.ncs b/_haks/poa_exp_ability/nw_s1_gazedomn.ncs deleted file mode 100644 index 1456074e..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazedomn.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazedomn.nss b/_haks/poa_exp_ability/nw_s1_gazedomn.nss deleted file mode 100644 index 56e56e0b..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazedomn.nss +++ /dev/null @@ -1,78 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Dominate -//:: NW_S1_GazeDomn -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - if(nDuration == 0) { nDuration = 1; } - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectDominated(); - effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED); - effect eLink = EffectLinkEffects(eDur, eVisDur); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - nDuration = GetScaledDuration(nDuration , oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DOMINATE)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(GetIsEnemy(oTarget)) - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) - { - eGaze = GetScaledEffect(eGaze, oTarget); - eLink = EffectLinkEffects(eLink, eGaze); - - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_gazedoom.ncs b/_haks/poa_exp_ability/nw_s1_gazedoom.ncs deleted file mode 100644 index 8642f0fc..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazedoom.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazedoom.nss b/_haks/poa_exp_ability/nw_s1_gazedoom.nss deleted file mode 100644 index cb359b59..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazedoom.nss +++ /dev/null @@ -1,74 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze of Doom -//:: NW_S1_GazeDoom.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - If the target fails a save they recieve a -2 - penalty to all saves, attack rolls, damage and - skill checks for the duration of the spell. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Oct 22, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - if(nDuration == 0) { nDuration = 1; } - - location lTargetLocation = GetSpellTargetLocation(); - - effect eVis = EffectVisualEffect(VFX_IMP_DOOM); - effect eSaves = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2); - effect eAttack = EffectAttackDecrease(2); - effect eDamage = EffectDamageDecrease(2); - effect eSkill = EffectSkillDecrease(SKILL_ALL_SKILLS, 2); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eAttack, eDamage); - eLink = EffectLinkEffects(eLink, eSaves); - eLink = EffectLinkEffects(eLink, eSkill); - eLink = EffectLinkEffects(eLink, eDur); - - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, GetSpellTargetLocation()); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - if(oTarget != oNPC) - { - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DOOM)); - //Spell Resistance and Saving throw - if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC)) - { - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink , oTarget, RoundsToSeconds(nDuration)); - } - } - } - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, GetSpellTargetLocation()); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_gazeevil.ncs b/_haks/poa_exp_ability/nw_s1_gazeevil.ncs deleted file mode 100644 index 34e774a4..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazeevil.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazeevil.nss b/_haks/poa_exp_ability/nw_s1_gazeevil.nss deleted file mode 100644 index eb2a269c..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazeevil.nss +++ /dev/null @@ -1,70 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Deatroy Good -//:: NW_S1_GazeEvil -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 13, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_GOOD) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DEATH)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) - { - //Apply the VFX impact and effects - //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_gazefear.ncs b/_haks/poa_exp_ability/nw_s1_gazefear.ncs deleted file mode 100644 index 25a2117c..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazefear.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazefear.nss b/_haks/poa_exp_ability/nw_s1_gazefear.nss deleted file mode 100644 index 333d85ce..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazefear.nss +++ /dev/null @@ -1,74 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Fear -//:: NW_S1_GazeFear -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - if(nDuration == 0) { nDuration = 1; } - nDuration = GetScaledDuration(nDuration , oTarget); - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectFrightened(); - effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); - effect eLink = EffectLinkEffects(eGaze, eVisDur); - eLink = EffectLinkEffects(eLink, eDur); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - nDuration = GetScaledDuration(nDuration , oTarget); - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_FEAR)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, oNPC, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_gazegood.ncs b/_haks/poa_exp_ability/nw_s1_gazegood.ncs deleted file mode 100644 index c5e9d5c7..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazegood.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazegood.nss b/_haks/poa_exp_ability/nw_s1_gazegood.nss deleted file mode 100644 index 6ce014de..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazegood.nss +++ /dev/null @@ -1,70 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Deatroy Evil -//:: NW_S1_GazeGood -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 13, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DEATH)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) - { - //Apply the VFX impact and effects - //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_gazelaw.ncs b/_haks/poa_exp_ability/nw_s1_gazelaw.ncs deleted file mode 100644 index 28b04ee1..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazelaw.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazelaw.nss b/_haks/poa_exp_ability/nw_s1_gazelaw.nss deleted file mode 100644 index 14a9401b..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazelaw.nss +++ /dev/null @@ -1,71 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Deatroy Chaos -//:: NW_S1_GazeLaw -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 13, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - if(nDuration == 0) { nDuration = 1; } - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - if(GetAlignmentLawChaos(oTarget) == ALIGNMENT_CHAOTIC) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DESTROY_LAW)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) - { - //Apply the VFX impact and effects - //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_gazestun.ncs b/_haks/poa_exp_ability/nw_s1_gazestun.ncs deleted file mode 100644 index 1cf11504..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_gazestun.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_gazestun.nss b/_haks/poa_exp_ability/nw_s1_gazestun.nss deleted file mode 100644 index 8c443992..00000000 --- a/_haks/poa_exp_ability/nw_s1_gazestun.nss +++ /dev/null @@ -1,73 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gaze: Stun -//:: NW_S1_GazeStun -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cone shape that affects all within the AoE if they - fail a Will Save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "x0_i0_match" - -void main() -{ -//-------------------------------------------------------------------------- -// Make sure we are not blind -//-------------------------------------------------------------------------- - if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); - return; - } - - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDuration = 1 + (nHD / 3); - - location lTargetLocation = GetSpellTargetLocation(); - - effect eGaze = EffectStunned(); - effect eVis = EffectVisualEffect(VFX_IMP_STUN); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eLink = EffectLinkEffects(eDur, eVisDur); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - nDuration = GetScaledDuration(nDuration , oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_STUNNED)); - //Determine effect delay - float fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) - { - eGaze = GetScaledEffect(eGaze, oTarget); - eLink = EffectLinkEffects(eLink, eGaze); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_golemgas.ncs b/_haks/poa_exp_ability/nw_s1_golemgas.ncs deleted file mode 100644 index efb74eeb..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_golemgas.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_golemgas.nss b/_haks/poa_exp_ability/nw_s1_golemgas.nss deleted file mode 100644 index 6fb1495a..00000000 --- a/_haks/poa_exp_ability/nw_s1_golemgas.nss +++ /dev/null @@ -1,41 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Golem Breath -//:: NW_S1_GolemGas -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Iron Golem spits out a cone of poison. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 22, 2001 -//::////////////////////////////////////////////// - -//#include "wm_include" -void main() -{ - //if (WildMagicOverride()) { return; } - //Declare major variables - location lTargetLocation = GetSpellTargetLocation(); - object oTarget; - effect eCone = EffectPoison(POISON_IRON_GOLEM); - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_GOLEM_BREATH_GAS)); - //Determine effect delay - float fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; - //Apply poison effect - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); - } -} - - - diff --git a/_haks/poa_exp_ability/nw_s1_hndbreath.ncs b/_haks/poa_exp_ability/nw_s1_hndbreath.ncs deleted file mode 100644 index 9a91b929..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_hndbreath.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_hndbreath.nss b/_haks/poa_exp_ability/nw_s1_hndbreath.nss deleted file mode 100644 index e1427974..00000000 --- a/_haks/poa_exp_ability/nw_s1_hndbreath.nss +++ /dev/null @@ -1,66 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Hell Hound Fire Breath -//:: NW_S1_HndBreath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A cone of fire eminates from the hound. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); - int nDC = 10 +nCONMod+ (nHD/2); - int nDamage = d6(2); - - float fDelay; - - location lTargetLocation = GetSpellTargetLocation(); - - effect eCone; - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HELL_HOUND_FIREBREATH)); - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE); - - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - - //Set damage effect - eCone = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); - if(nDamage > 0) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); - } -} - - - diff --git a/_haks/poa_exp_ability/nw_s1_howlconf.ncs b/_haks/poa_exp_ability/nw_s1_howlconf.ncs deleted file mode 100644 index bb2f5dd5..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_howlconf.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_howlconf.nss b/_haks/poa_exp_ability/nw_s1_howlconf.nss deleted file mode 100644 index f9d770e4..00000000 --- a/_haks/poa_exp_ability/nw_s1_howlconf.nss +++ /dev/null @@ -1,67 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Howl: Confuse -//:: NW_S1_HowlConf -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A howl emanates from the creature which affects - all within 20ft unless they make a save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/4); - int nDuration = 1 + (nHD/4); - if(nDuration == 0) { nDuration = 1; } - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S); - effect eHowl = EffectConfused(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND); - effect eLink = EffectLinkEffects(eHowl, eDur); - eLink = EffectLinkEffects(eLink, eDur2); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) - { - nDuration = GetScaledDuration(nDuration , oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_CONFUSE)); - fDelay = GetDistanceToObject(oTarget)/10; - //Make a saving throw check - if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_howldaze.ncs b/_haks/poa_exp_ability/nw_s1_howldaze.ncs deleted file mode 100644 index 6955122b..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_howldaze.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_howldaze.nss b/_haks/poa_exp_ability/nw_s1_howldaze.nss deleted file mode 100644 index bd8e20c5..00000000 --- a/_haks/poa_exp_ability/nw_s1_howldaze.nss +++ /dev/null @@ -1,65 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Howl: Daze -//:: NW_S1_HowlDaze -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A howl emanates from the creature which affects - all within 10ft unless they make a save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/4); - int nDuration = 1 + (nHD/4); - if(nDuration == 0) { nDuration = 1; } - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); - effect eHowl = EffectDazed(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND); - effect eLink = EffectLinkEffects(eHowl, eDur); - eLink = EffectLinkEffects(eLink, eDur2); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) - { - nDuration = GetScaledDuration(nDuration , oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_DAZE)); - fDelay = GetDistanceToObject(oTarget)/10; - //Make a saving throw check - if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_howldeath.ncs b/_haks/poa_exp_ability/nw_s1_howldeath.ncs deleted file mode 100644 index ad0aea12..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_howldeath.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_howldeath.nss b/_haks/poa_exp_ability/nw_s1_howldeath.nss deleted file mode 100644 index 5730647b..00000000 --- a/_haks/poa_exp_ability/nw_s1_howldeath.nss +++ /dev/null @@ -1,59 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Howl: Death -//:: NW_S1_HowlDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A howl emanates from the creature which affects - all within 10ft unless they make a save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/4); - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_ODD); - effect eHowl = EffectDeath(); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_DEATH)); - fDelay = GetDistanceToObject(oTarget)/10; - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_howlfear.ncs b/_haks/poa_exp_ability/nw_s1_howlfear.ncs deleted file mode 100644 index b5445aa3..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_howlfear.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_howlfear.nss b/_haks/poa_exp_ability/nw_s1_howlfear.nss deleted file mode 100644 index 13dcfaf0..00000000 --- a/_haks/poa_exp_ability/nw_s1_howlfear.nss +++ /dev/null @@ -1,68 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Howl: Fear -//:: NW_S1_HowlFear -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A howl emanates from the creature which affects - all within 10ft unless they make a save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/4); - int nDuration = 1 + (nHD/4); - if(nDuration == 0) { nDuration = 1; } - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); - effect eHowl = EffectFrightened(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); - effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND); - effect eLink = EffectLinkEffects(eHowl, eDur); - eLink = EffectLinkEffects(eLink, eDur2); - - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) - { - fDelay = GetDistanceToObject(oTarget)/10; - nDuration = GetScaledDuration(nDuration , oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_FEAR)); - - //Make a saving throw check - if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_howlparal.ncs b/_haks/poa_exp_ability/nw_s1_howlparal.ncs deleted file mode 100644 index 5e89120c..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_howlparal.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_howlparal.nss b/_haks/poa_exp_ability/nw_s1_howlparal.nss deleted file mode 100644 index b0ecd43c..00000000 --- a/_haks/poa_exp_ability/nw_s1_howlparal.nss +++ /dev/null @@ -1,65 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Howl: Paralysis -//:: NW_S1_HowlParal -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A howl emanates from the creature which affects - all within 10ft unless they make a save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/4); - int nDuration = 1 + (nHD/4); - if(nDuration == 0) { nDuration = 1; } - - float fDelay; - - effect eHowl = EffectParalyze(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD); - effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_ODD); - effect eLink = EffectLinkEffects(eHowl, eDur); - eLink = EffectLinkEffects(eLink, eDur2); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) - { - fDelay = GetDistanceToObject(oTarget)/10; - nDuration = GetScaledDuration(nDuration , oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_PARALYSIS)); - - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_NONE, oNPC, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_howlsonic.ncs b/_haks/poa_exp_ability/nw_s1_howlsonic.ncs deleted file mode 100644 index a60d0c31..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_howlsonic.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_howlsonic.nss b/_haks/poa_exp_ability/nw_s1_howlsonic.nss deleted file mode 100644 index 4de9768f..00000000 --- a/_haks/poa_exp_ability/nw_s1_howlsonic.nss +++ /dev/null @@ -1,65 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Howl: Sonic -//:: NW_S1_HowlSonic -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A howl emanates from the creature which affects - all within 10ft unless they make a save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/4); - int nDamage; - int nSonic = nHD/4; - if(nSonic == 0) { nSonic = 1; } - - effect eVis = EffectVisualEffect(VFX_IMP_SONIC); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY); - - float fDelay; - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsFriend(oTarget) && oTarget != oNPC) - { - fDelay = GetDistanceToObject(oTarget)/20; - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_SONIC)); - nDamage = d6(nSonic); - //Make a saving throw check - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SONIC, oNPC, fDelay)) - { - nDamage = nDamage / 2; - } - //Set damage effect - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_SONIC); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/nw_s1_howlstun.ncs b/_haks/poa_exp_ability/nw_s1_howlstun.ncs deleted file mode 100644 index b3ad098c..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_howlstun.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_howlstun.nss b/_haks/poa_exp_ability/nw_s1_howlstun.nss deleted file mode 100644 index 962d9b90..00000000 --- a/_haks/poa_exp_ability/nw_s1_howlstun.nss +++ /dev/null @@ -1,66 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Howl: Stun -//:: NW_S1_HowlStun -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A howl emanates from the creature which affects - all within 10ft unless they make a save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "NW_I0_SPELLS" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/4); - int nDuration = 1 + (nHD/4); - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_STUN); - effect eHowl = EffectStunned(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND); - effect eLink = EffectLinkEffects(eHowl, eDur); - eLink = EffectLinkEffects(eLink, eDur2); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) - { - fDelay = GetDistanceToObject(oTarget)/10; - nDuration = GetScaledDuration(nDuration , oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_STUN)); - - //Make a saving throw check - if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_krenscare.ncs b/_haks/poa_exp_ability/nw_s1_krenscare.ncs deleted file mode 100644 index e9f390cd..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_krenscare.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_krenscare.nss b/_haks/poa_exp_ability/nw_s1_krenscare.nss deleted file mode 100644 index 79099160..00000000 --- a/_haks/poa_exp_ability/nw_s1_krenscare.nss +++ /dev/null @@ -1,61 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Krenshar Fear Stare -//:: NW_S1_KrenScare -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Causes those in the gaze to be struck with fear -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 8, 2002 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nMetaMagic = PRCGetMetaMagicFeat(); - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); - effect eFear = EffectFrightened(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - //Link the fear and mind effects - effect eLink = EffectLinkEffects(eFear, eMind); - eLink = EffectLinkEffects(eLink, eDur); - - - //Get first target in the spell cone - oTarget = GetFirstObjectInShape(SHAPE_CONE, 10.0, GetSpellTargetLocation(), TRUE); - while(GetIsObjectValid(oTarget)) - { - //Make faction check - if(GetIsEnemy(oTarget)) - { - fDelay = GetDistanceToObject(oTarget)/20; - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_KRENSHAR_SCARE)); - //Make a will save - if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) - { - //Apply the linked effects and the VFX impact - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3))); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - //Get next target in the spell cone - oTarget = GetNextObjectInShape(SHAPE_CONE, 10.0, GetSpellTargetLocation(), TRUE); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_mephsalt.ncs b/_haks/poa_exp_ability/nw_s1_mephsalt.ncs deleted file mode 100644 index 37dd93c8..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_mephsalt.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_mephsalt.nss b/_haks/poa_exp_ability/nw_s1_mephsalt.nss deleted file mode 100644 index 03b0b97f..00000000 --- a/_haks/poa_exp_ability/nw_s1_mephsalt.nss +++ /dev/null @@ -1,63 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Salt Mephit Breath -//:: NW_S1_MephSalt -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Salt Mephit shoots out a bolt of corrosive material - that causes 1d4 damage and reduces AC and Attack by 2 - - This should be a cone - Jaysyn -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); - int nDC = 10 +nCONMod+ (nHD/2); - int nDamage = d4(); - - effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); - effect eBolt, eAttack, eAC; - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ACID); - - //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); - if(nDamage == 0) {nTouch = 0;} - if(nTouch > 0) - { - if(nTouch == 2) - { - nDamage *= 2; - } - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MEPHIT_SALT_BREATH)); - - //Set damage, AC mod and attack mod effects - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ACID); - eAC = EffectACDecrease(2); - eAttack = EffectAttackDecrease(2); - effect eLink = EffectLinkEffects(eAttack, eAC); - eLink = EffectLinkEffects(eLink, eDur); - - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_mephsteam.ncs b/_haks/poa_exp_ability/nw_s1_mephsteam.ncs deleted file mode 100644 index 0fe7d3af..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_mephsteam.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_mephsteam.nss b/_haks/poa_exp_ability/nw_s1_mephsteam.nss deleted file mode 100644 index 9b46d89b..00000000 --- a/_haks/poa_exp_ability/nw_s1_mephsteam.nss +++ /dev/null @@ -1,67 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Steam Mephit Breath -//:: NW_S1_MephSteam -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Steam Mephit shoots out a bolt of steam - that causes 1d4 damage and reduces AC by 4 - and Attack by 2 - - This should be a cone - Jaysyn -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 11, 2001 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); - int nDC = 10 +nCONMod+ (nHD/2); - int nDamage = d4(); - - - effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); - effect eBolt, eAttack, eAC; - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE); - - //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); - if(nDamage == 0) {nTouch = 0;} - - if(nTouch > 0) - { - if(nTouch == 2) - { - nDamage *= 2; - } - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MEPHIT_STEAM_BREATH)); - - //Set damage, AC mod and attack mod effects - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); - eAC = EffectACDecrease(4); - eAttack = EffectAttackDecrease(2); - effect eLink = EffectLinkEffects(eAC, eAttack); - eLink = EffectLinkEffects(eLink, eDur); - - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_mumundead.ncs b/_haks/poa_exp_ability/nw_s1_mumundead.ncs deleted file mode 100644 index 2205868c..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_mumundead.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_mumundead.nss b/_haks/poa_exp_ability/nw_s1_mumundead.nss deleted file mode 100644 index f11db57b..00000000 --- a/_haks/poa_exp_ability/nw_s1_mumundead.nss +++ /dev/null @@ -1,53 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bolster Undead -//:: NW_S1_MumUndead -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - This spell increases the Turn Resistance of - all undead around the caster by an amount - scaled with HD. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 22, 2002 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nScaling = nHD / 4; - - if(nScaling == 0) {nScaling = 1;} - - float fDelay; - - effect eTurn = EffectTurnResistanceIncrease(nScaling); - effect eVis = EffectVisualEffect(VFX_IMP_HEAD_EVIL); - effect eImpact = EffectVisualEffect(VFX_FNF_LOS_EVIL_30); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetLocation(oNPC)); - - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(GetIsFriend(oTarget)) - { - fDelay = GetRandomDelay(); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MUMMY_BOLSTER_UNDEAD, FALSE)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTurn, oTarget, RoundsToSeconds(10))); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_pulschrdr.ncs b/_haks/poa_exp_ability/nw_s1_pulschrdr.ncs deleted file mode 100644 index 75123e02..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulschrdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulschrdr.nss b/_haks/poa_exp_ability/nw_s1_pulschrdr.nss deleted file mode 100644 index b55902c4..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulschrdr.nss +++ /dev/null @@ -1,73 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Charisma Drain -//:: NW_S1_PulsDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - int nDamage = nHD/5; - - if (nDamage == 0) {nDamage = 1;} - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_CHARISMA)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Make a saving throw check - if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) - { - //Set the Ability mod and change to supernatural effect - eHowl = EffectAbilityDecrease(ABILITY_CHARISMA, nDamage); - eHowl = SupernaturalEffect(eHowl); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get first target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_pulscold.ncs b/_haks/poa_exp_ability/nw_s1_pulscold.ncs deleted file mode 100644 index 60d223f8..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulscold.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulscold.nss b/_haks/poa_exp_ability/nw_s1_pulscold.nss deleted file mode 100644 index c5ff7d28..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulscold.nss +++ /dev/null @@ -1,68 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Cold -//:: NW_S1_PulsCold -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage = d6(nHD); - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_COLD); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_COLD)); - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_COLD); - if(nDamage > 0) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_pulscondr.ncs b/_haks/poa_exp_ability/nw_s1_pulscondr.ncs deleted file mode 100644 index 7ff108ca..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulscondr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulscondr.nss b/_haks/poa_exp_ability/nw_s1_pulscondr.nss deleted file mode 100644 index bfdbfcfe..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulscondr.nss +++ /dev/null @@ -1,71 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Constitution Drain -//:: NW_S1_PulsDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - int nDamage = nHD/5; - - if (nDamage == 0) {nDamage = 1;} - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_CONSTITUTION)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Make a saving throw check - if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) - { - //Set the Ability mod and change to supernatural effect - eHowl = EffectAbilityDecrease(ABILITY_CONSTITUTION, nDamage); - eHowl = SupernaturalEffect(eHowl); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get first target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_pulsdeath.ncs b/_haks/poa_exp_ability/nw_s1_pulsdeath.ncs deleted file mode 100644 index 4dfef96b..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsdeath.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsdeath.nss b/_haks/poa_exp_ability/nw_s1_pulsdeath.nss deleted file mode 100644 index 7c949d1c..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsdeath.nss +++ /dev/null @@ -1,68 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Death -//:: NW_S1_PulsDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - int nDamage = nHD/5; - - if (nDamage == 0) {nDamage = 1;} - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - effect eHowl = EffectDeath(); - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - if(oTarget != OBJECT_SELF) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DEATH)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_pulsdexdr.ncs b/_haks/poa_exp_ability/nw_s1_pulsdexdr.ncs deleted file mode 100644 index c2104bed..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsdexdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsdexdr.nss b/_haks/poa_exp_ability/nw_s1_pulsdexdr.nss deleted file mode 100644 index d29872ad..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsdexdr.nss +++ /dev/null @@ -1,70 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Dexterity Drain -//:: NW_S1_PulsDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - int nDamage = nHD/5; - - if (nDamage == 0) {nDamage = 1;} - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_DEXTERITY)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Make a saving throw check - if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) - { - //Set the Ability mod and change to supernatural effect - eHowl = EffectAbilityDecrease(ABILITY_DEXTERITY, nDamage); - eHowl = SupernaturalEffect(eHowl); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get first target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_pulsdis.ncs b/_haks/poa_exp_ability/nw_s1_pulsdis.ncs deleted file mode 100644 index 39c19bac..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsdis.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsdis.nss b/_haks/poa_exp_ability/nw_s1_pulsdis.nss deleted file mode 100644 index f81568cf..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsdis.nss +++ /dev/null @@ -1,85 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Disease -//:: NW_S1_PulsDis -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of disease spreads out from the creature - and infects all those within 10ft -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Aug 14, 2000 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nRacial = MyPRCGetRacialType(oNPC); - int nHD = GetHitDice(oNPC); - int nDamage = d6(nHD); - int nDisease; - - float fDelay; - - effect eDisease; - effect ePulse = EffectVisualEffect(266); - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, ePulse, GetLocation(oNPC)); - - //Determine the disease type based on the Racial Type - switch (nRacial) - { - case RACIAL_TYPE_VERMIN: - nDisease = DISEASE_VERMIN_MADNESS; - break; - case RACIAL_TYPE_UNDEAD: - nDisease = DISEASE_FILTH_FEVER; - break; - case RACIAL_TYPE_OUTSIDER: - nDisease = DISEASE_DEMON_FEVER; - break; - case RACIAL_TYPE_MAGICAL_BEAST: - nDisease = DISEASE_SOLDIER_SHAKES; - break; - case RACIAL_TYPE_ABERRATION: - nDisease = DISEASE_BLINDING_SICKNESS; - break; - default: - nDisease = DISEASE_MINDFIRE; - break; - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_DISEASE)); - //Determine effect delay - fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; - eDisease = EffectDisease(nDisease); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_pulselec.ncs b/_haks/poa_exp_ability/nw_s1_pulselec.ncs deleted file mode 100644 index 6ec1e1c3..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulselec.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulselec.nss b/_haks/poa_exp_ability/nw_s1_pulselec.nss deleted file mode 100644 index 2f856145..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulselec.nss +++ /dev/null @@ -1,68 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Lightning -//:: NW_S0_CallLghtn.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - All creatures within 10ft of the creature take - 1d6 per HD up to 10d6 -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 22, 2001 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_CHEST); - effect eHowl = EffectVisualEffect(VFX_IMP_PULSE_COLD); - - DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eHowl, GetLocation(oNPC))); - - float fDelay; - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_LIGHTNING)); - //Roll the damage - nDamage = d6(nHD); - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); - if(nDamage > 0) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget, 0.5)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_pulsfire.ncs b/_haks/poa_exp_ability/nw_s1_pulsfire.ncs deleted file mode 100644 index ae1252be..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsfire.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsfire.nss b/_haks/poa_exp_ability/nw_s1_pulsfire.nss deleted file mode 100644 index 9270aa99..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsfire.nss +++ /dev/null @@ -1,69 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Fire -//:: NW_S1_PulsFire -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_FIRE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != OBJECT_SELF) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_FIRE)); - //Roll the damage - nDamage = d6(nHD); - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE); - //Determine effect delay - fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); - if(nDamage > 0) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF)); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_pulsholy.ncs b/_haks/poa_exp_ability/nw_s1_pulsholy.ncs deleted file mode 100644 index db14e15f..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsholy.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsholy.nss b/_haks/poa_exp_ability/nw_s1_pulsholy.nss deleted file mode 100644 index 20ae4638..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsholy.nss +++ /dev/null @@ -1,89 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Holy -//:: NW_S1_PulsHoly -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. Undead are damaged, allies are healed. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M); - effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_HOLY); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Roll the amount to heal or damage - nDamage = d4(nHD); - //If the target is not undead - if (MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) - { - //Make a faction check - if(oTarget != oNPC) - { - if(GetIsFriend(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY, FALSE)); - //Set heal effect - eHowl = EffectHeal(nDamage); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - else - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_DIVINE); - //Set damage effect - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_DIVINE) ; - if(nDamage > 0) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY)); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_pulsintdr.ncs b/_haks/poa_exp_ability/nw_s1_pulsintdr.ncs deleted file mode 100644 index 027b7d6c..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsintdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsintdr.nss b/_haks/poa_exp_ability/nw_s1_pulsintdr.nss deleted file mode 100644 index 8558364b..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsintdr.nss +++ /dev/null @@ -1,72 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Intelligence Drain -//:: NW_S1_PulsDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - int nDamage = nHD/5; - - if (nDamage == 0) {nDamage = 1;} - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_INTELLIGENCE)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Make a saving throw check - if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) - { - //Set the Ability mod and change to supernatural effect - eHowl = EffectAbilityDecrease(ABILITY_INTELLIGENCE, nDamage); - eHowl = SupernaturalEffect(eHowl); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get first target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_pulslvldr.ncs b/_haks/poa_exp_ability/nw_s1_pulslvldr.ncs deleted file mode 100644 index 436dd492..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulslvldr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulslvldr.nss b/_haks/poa_exp_ability/nw_s1_pulslvldr.nss deleted file mode 100644 index f65e073e..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulslvldr.nss +++ /dev/null @@ -1,62 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Level Drain -//:: NW_S1_PulsLvlDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetLocation(oNPC)); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - fDelay = GetSpellEffectDelay(GetLocation(oNPC), oTarget)/20; - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) - { - //Apply the VFX impact and effects - eHowl = EffectNegativeLevel(1); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_pulsneg.ncs b/_haks/poa_exp_ability/nw_s1_pulsneg.ncs deleted file mode 100644 index c3ff5256..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsneg.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsneg.nss b/_haks/poa_exp_ability/nw_s1_pulsneg.nss deleted file mode 100644 index 9bfa749f..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsneg.nss +++ /dev/null @@ -1,87 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Negative -//:: NW_S1_PulsDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. Undead are healed. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - int nDamage; - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M); - effect eVis2 = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Roll the amount to heal or damage - nDamage = d4(nHD); - //If the target is undead - if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - //Make a faction check - if(GetIsFriend(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY, FALSE)); - //Set heal effect - eHowl = EffectHeal(nDamage); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - else - { - if(!GetIsReactionTypeFriendly(oTarget) && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) - { - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE); - //Set damage effect - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_NEGATIVE); - if(nDamage > 0) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY)); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); - } - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_pulspois.ncs b/_haks/poa_exp_ability/nw_s1_pulspois.ncs deleted file mode 100644 index a381a67c..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulspois.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulspois.nss b/_haks/poa_exp_ability/nw_s1_pulspois.nss deleted file mode 100644 index 252ae3a0..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulspois.nss +++ /dev/null @@ -1,138 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Poison -//:: NW_S1_PulsPois -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. All who make a reflex save are not - poisoned. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 23, 2000 -//::////////////////////////////////////////////// -#include "prc_inc_racial" -//#include "wm_include" - -void main() -{ -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); - int nDC = 10 +nCONMod+ (nHD/2); - int nRacial = MyPRCGetRacialType(oNPC); - int nPoison; - - float fDelay; - - effect ePoison; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE); - - //Determine the poison type based on the Racial Type and HD - switch (nRacial) - { - case RACIAL_TYPE_OUTSIDER: - if (nHD <= 9) - { - nPoison = POISON_QUASIT_VENOM; - } - else if (nHD > 9 && nHD < 13) - { - nPoison = POISON_BEBILITH_VENOM; - } - else if (nHD >= 13) - { - nPoison = POISON_PIT_FIEND_ICHOR; - } - break; - case RACIAL_TYPE_VERMIN: - if (nHD < 3) - { - nPoison = POISON_TINY_SPIDER_VENOM; - } - else if (nHD <= 3 && nHD < 6) - { - nPoison = POISON_SMALL_SPIDER_VENOM; - } - else if (nHD <= 6 && nHD < 9) - { - nPoison = POISON_MEDIUM_SPIDER_VENOM; - } - else if (nHD <= 9 && nHD < 12) - { - nPoison = POISON_LARGE_SPIDER_VENOM; - } - else if (nHD <= 12 && nHD < 15) - { - nPoison = POISON_HUGE_SPIDER_VENOM; - } - else if (nHD <= 15 && nHD < 18) - { - nPoison = POISON_GARGANTUAN_SPIDER_VENOM; - } - else if (nHD >= 18) - { - nPoison = POISON_COLOSSAL_SPIDER_VENOM; - } - break; - default: - if (nHD < 3) - { - nPoison = POISON_NIGHTSHADE; - } - else if (nHD <= 3 && nHD < 6) - { - nPoison = POISON_BLADE_BANE; - } - else if (nHD <= 6 && nHD < 9) - { - nPoison = POISON_BLOODROOT; - } - else if (nHD <= 9 && nHD < 12) - { - nPoison = POISON_LARGE_SPIDER_VENOM; - } - else if (nHD <= 12 && nHD < 15) - { - nPoison = POISON_LICH_DUST; - } - else if (nHD <= 15 && nHD < 18) - { - nPoison = POISON_DARK_REAVER_POWDER; - } - else if (nHD >= 18 ) - { - nPoison = POISON_BLACK_LOTUS_EXTRACT; - } - break; - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_POISON)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - ePoison = EffectPoison(nPoison); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - - diff --git a/_haks/poa_exp_ability/nw_s1_pulsspore.ncs b/_haks/poa_exp_ability/nw_s1_pulsspore.ncs deleted file mode 100644 index 4f7e5904..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsspore.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsspore.nss b/_haks/poa_exp_ability/nw_s1_pulsspore.nss deleted file mode 100644 index 7e9e34d3..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsspore.nss +++ /dev/null @@ -1,50 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Vrock Spores -//:: NW_S1_PulsSpore -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of disease spreads out from the creature - and infects all those within 10ft -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 8, 2002 -//::////////////////////////////////////////////// -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - float fDelay; - effect eDisease; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DISEASE)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - eDisease = EffectDisease(DISEASE_SOLDIER_SHAKES); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget)); - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC)); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_pulsstrdr.ncs b/_haks/poa_exp_ability/nw_s1_pulsstrdr.ncs deleted file mode 100644 index 416737ae..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulsstrdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsstrdr.nss b/_haks/poa_exp_ability/nw_s1_pulsstrdr.nss deleted file mode 100644 index 5f88eabc..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulsstrdr.nss +++ /dev/null @@ -1,71 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Strength Drain -//:: NW_S1_PulsDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - int nDamage = nHD/5; - - if (nDamage == 0) {nDamage = 1;} - - float fDelay; - - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eHowl; - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oNPC) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_STRENGTH)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Make a saving throw check - if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) - { - //Set the Ability mod and change to supernatural effect - eHowl = EffectAbilityDecrease(ABILITY_STRENGTH, nDamage); - eHowl = SupernaturalEffect(eHowl); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Get next target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_pulswind.ncs b/_haks/poa_exp_ability/nw_s1_pulswind.ncs deleted file mode 100644 index 558361ad..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulswind.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulswind.nss b/_haks/poa_exp_ability/nw_s1_pulswind.nss deleted file mode 100644 index 05724072..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulswind.nss +++ /dev/null @@ -1,51 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse Whirlwind -//:: NW_S1_PulsWind -//:: Copyright (c) 2001 Bioware Corp. -//:://///////////////////////////////////////////// -/* - All those that fail a save are knocked - down by the elemental whirlwind. -*/ -//:://///////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 8, 2002 -//:://///////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nSTRMod = GetAbilityModifier(ABILITY_STRENGTH, oNPC); - int nDC = 10 +nSTRMod+ (nHD/2); - - effect eDown = EffectKnockdown(); - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_WIND); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) - { - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDown, oTarget, 5.0); - } - //Get next target in spell area - } - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); - } -} diff --git a/_haks/poa_exp_ability/nw_s1_pulswisdr.ncs b/_haks/poa_exp_ability/nw_s1_pulswisdr.ncs deleted file mode 100644 index 78cdc78f..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_pulswisdr.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_pulswisdr.nss b/_haks/poa_exp_ability/nw_s1_pulswisdr.nss deleted file mode 100644 index b1bf68c3..00000000 --- a/_haks/poa_exp_ability/nw_s1_pulswisdr.nss +++ /dev/null @@ -1,68 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Pulse: Wisdom Drain -//:: NW_S1_PulsWisDr -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A wave of energy emanates from the creature which affects - all within 10ft. Damage can be reduced by half for all - damaging variants. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 14, 2000 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget; - - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - int nDamage = nHD/5; - - if (nDamage == 0) {nDamage = 1;} - - float fDelay; - - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eHowl; - effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); - - //Get first target in spell area - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF)); - while(GetIsObjectValid(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_WISDOM)); - //Determine effect delay - fDelay = GetDistanceBetween(oNPC, oTarget)/20; - //Make a saving throw check - if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) - { - //Set the Ability mod and change to supernatural effect - eHowl = EffectAbilityDecrease(ABILITY_WISDOM, nDamage); - eHowl = SupernaturalEffect(eHowl); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - //Get first target in spell area - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF)); - } -} - diff --git a/_haks/poa_exp_ability/nw_s1_smokeclaw.ncs b/_haks/poa_exp_ability/nw_s1_smokeclaw.ncs deleted file mode 100644 index 89c6c2a7..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_smokeclaw.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_smokeclaw.nss b/_haks/poa_exp_ability/nw_s1_smokeclaw.nss deleted file mode 100644 index 6db3666f..00000000 --- a/_haks/poa_exp_ability/nw_s1_smokeclaw.nss +++ /dev/null @@ -1,64 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Smoke Claws -//:: NW_S1_SmokeClaw -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - If a Belker succeeds at a touch attack the - target breaths in part of the Belker and suffers - 3d4 damage per round until a Fortitude save is - made. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 23 , 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//#include "wm_include" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); - int nDC = 10 +nCONMod+ (nHD/2); - - int bSave = FALSE; - - effect eVis = EffectVisualEffect(VFX_COM_BLOOD_REG_RED); - effect eSmoke; - float fDelay = 0.0; - - //Make a touch attack - if(TouchAttackMelee(oTarget)) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Make a saving throw check - while (bSave == FALSE) - { - //Make a saving throw check - if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE, oNPC, fDelay)) - { - bSave = TRUE; - } - else - { - //Set damage - eSmoke = EffectDamage(d4(3)); - //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eSmoke, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - //Increment the delay - fDelay = fDelay + 6.0; - } - } - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_stink_a.ncs b/_haks/poa_exp_ability/nw_s1_stink_a.ncs deleted file mode 100644 index 6bda0db5..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_stink_a.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_stink_a.nss b/_haks/poa_exp_ability/nw_s1_stink_a.nss deleted file mode 100644 index 67652dde..00000000 --- a/_haks/poa_exp_ability/nw_s1_stink_a.nss +++ /dev/null @@ -1,57 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Stinking Cloud On Enter -//:: NW_S1_Stink_A.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Those within the area of effect must make a - fortitude save or be dazed. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 17, 2001 -//::////////////////////////////////////////////// - -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); //Get the first object in the persistant area - - int nHD = GetHitDice(oNPC); - int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); - int nDC = 10 +nCONMod+ (nHD/2); - - effect eStink = EffectDazed(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eMind, eStink); - eLink = EffectLinkEffects(eLink, eDur); - - effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); - - float fDelay; - - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - - if(MyPRCGetRacialType(oTarget) != RACIAL_TYPE_VERMIN) - { - if(GetIsEnemy(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_STINKING_CLOUD)); - //Make a Fort Save - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON)) - { - fDelay = GetRandomDelay(0.25, 1.0); - //Apply the VFX impact and linked effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2))); - } - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_tyrantfga.ncs b/_haks/poa_exp_ability/nw_s1_tyrantfga.ncs deleted file mode 100644 index ad691609..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_tyrantfga.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_tyrantfga.nss b/_haks/poa_exp_ability/nw_s1_tyrantfga.nss deleted file mode 100644 index a2752cbd..00000000 --- a/_haks/poa_exp_ability/nw_s1_tyrantfga.nss +++ /dev/null @@ -1,56 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Tyrant Fog Zombie Mist Heartbeat -//:: NW_S1_TyrantFgA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creatures entering the area around the zombie - must save or take 1 point of Constitution - damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} - - int bAbsent = TRUE; - int nHD = GetHitDice(oNPC); - int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nDC = 10 +nCHAMod+ (nHD/2); - - effect eTest; - effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, 1); - eCon = ExtraordinaryEffect(eCon); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eCon, eDur); - - if(!GetHasSpellEffect(SPELLABILITY_TYRANT_FOG_MIST, oTarget)) - { - if(bAbsent == TRUE) - { - if(GetIsEnemy(oTarget, oNPC)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_TYRANT_FOG_MIST)); - //Make a saving throw check - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON)) - { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(5)); - } - } - } - } -} diff --git a/_haks/poa_exp_ability/nw_s1_tyrantfog.ncs b/_haks/poa_exp_ability/nw_s1_tyrantfog.ncs deleted file mode 100644 index 8ba90b5d..00000000 Binary files a/_haks/poa_exp_ability/nw_s1_tyrantfog.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s1_tyrantfog.nss b/_haks/poa_exp_ability/nw_s1_tyrantfog.nss deleted file mode 100644 index e3ab9e63..00000000 --- a/_haks/poa_exp_ability/nw_s1_tyrantfog.nss +++ /dev/null @@ -1,25 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Tyrant Fog Zombie Mist -//:: NW_S1_TyrantFog.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creatures entering the area around the zombie - must save or take 1 point of Constitution - damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 25, 2001 -//::////////////////////////////////////////////// -//#include "wm_include" -#include "prc_inc_spells" - -void main() -{ - //if (WildMagicOverride()) { return; } - - //Declare and apply the AOE - effect eAOE = EffectAreaOfEffect(AOE_MOB_TYRANT_FOG); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAOE, OBJECT_SELF, HoursToSeconds(100)); -} diff --git a/_haks/poa_exp_ability/nw_s2_bardsong.ncs b/_haks/poa_exp_ability/nw_s2_bardsong.ncs deleted file mode 100644 index 45fa213b..00000000 Binary files a/_haks/poa_exp_ability/nw_s2_bardsong.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s2_bardsong.nss b/_haks/poa_exp_ability/nw_s2_bardsong.nss deleted file mode 100644 index 08723812..00000000 --- a/_haks/poa_exp_ability/nw_s2_bardsong.nss +++ /dev/null @@ -1,2218 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bard Song -//:: NW_S2_BardSong -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - This spells applies bonuses to all of the - bard's allies within 30ft for a set duration of - 10 rounds. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Feb 25, 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Georg Zoeller Oct 1, 2003 -/* -bugfix by Kovi 2002.07.30 -- loosing temporary hp resulted in loosing the other bonuses -*/ - -#include "prc_inc_clsfunc" -#include "prc_inc_combat" //for Dragonfire type getting - -void ApplyDragonfire(int nAmount, int nDuration, object oPC, object oCaster) -{ - int nAppearanceType; - int nDamageType = GetDragonfireDamageType(oPC); - //find primary weapon to add to - object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); - switch(nDamageType) - { - case DAMAGE_TYPE_ACID: nAppearanceType = ITEM_VISUAL_ACID; break; - case DAMAGE_TYPE_COLD: nAppearanceType = ITEM_VISUAL_COLD; break; - case DAMAGE_TYPE_ELECTRICAL: nAppearanceType = ITEM_VISUAL_ELECTRICAL; break; - case DAMAGE_TYPE_SONIC: nAppearanceType = ITEM_VISUAL_SONIC; break; - case DAMAGE_TYPE_FIRE: nAppearanceType = ITEM_VISUAL_FIRE; break; - } - SetLocalInt(oItem, "Insp_Dam_Type", nDamageType); - SetLocalInt(oItem, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); - IPSafeAddItemProperty(oItem, ItemPropertyVisualEffect(nAppearanceType), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,FALSE,TRUE); - - //add to gloves and claws too - oItem = GetItemInSlot(INVENTORY_SLOT_ARMS, oPC); - SetLocalInt(oItem, "Insp_Dam_Type", nDamageType); - SetLocalInt(oItem, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); - oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oPC); - SetLocalInt(oItem, "Insp_Dam_Type", nDamageType); - SetLocalInt(oItem, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); - - //do ammo for ranged attacks - object oAmmo = GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC); - SetLocalInt(oAmmo, "Insp_Dam_Type", nDamageType); - SetLocalInt(oAmmo, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oAmmo, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); - - oAmmo = GetItemInSlot(INVENTORY_SLOT_BULLETS, oPC); - SetLocalInt(oAmmo, "Insp_Dam_Type", nDamageType); - SetLocalInt(oAmmo, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oAmmo, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); - - oAmmo = GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC); - SetLocalInt(oAmmo, "Insp_Dam_Type", nDamageType); - SetLocalInt(oAmmo, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oAmmo, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); - - //now check offhand and bite - oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oPC); - SetLocalInt(oItem, "Insp_Dam_Type", nDamageType); - SetLocalInt(oItem, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); - oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC); - if(!GetIsShield(oItem) && oItem != OBJECT_INVALID) - { - SetLocalInt(oItem, "Insp_Dam_Type", nDamageType); - SetLocalInt(oItem, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); - IPSafeAddItemProperty(oItem, ItemPropertyVisualEffect(nAppearanceType), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,FALSE,TRUE); - } - oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC); - SetLocalInt(oItem, "Insp_Dam_Type", nDamageType); - SetLocalInt(oItem, "Insp_Dam_Dice", nAmount); - IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_DRAGONFIRE, nAmount), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); -} - -void main() -{ - if (PRCGetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(85764,OBJECT_SELF); // not useable when silenced - return; - } - string sTag = GetTag(OBJECT_SELF); - - //RemoveOldSongEffects(OBJECT_SELF,GetSpellId()); - - if (sTag == "x0_hen_dee" || sTag == "x2_hen_deekin") - { - // * Deekin has a chance of singing a doom song - // * same effect, better tune - if (Random(5) == 2) - { - // the Xp2 Deekin knows more than one doom song - if (d3() == 1 && sTag == "x2_hen_deekin") - { - DelayCommand(0.0, PlaySound("vs_nx2deekM_050")); - } - else - { - DelayCommand(0.0, PlaySound("vs_nx0deekM_074")); - DelayCommand(5.0, PlaySound("vs_nx0deekM_074")); - } - } - } - - - //Declare major variables - int nLevel = GetLevelByClass(CLASS_TYPE_BARD) + - GetLevelByClass(CLASS_TYPE_DIRGESINGER) + - GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST) + - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD) + - GetLevelByClass(CLASS_TYPE_VIRTUOSO); - - if (GetHasFeat(FEAT_SONG_WHITE_RAVEN, OBJECT_SELF)) - nLevel += GetLevelByClass(CLASS_TYPE_CRUSADER) + GetLevelByClass(CLASS_TYPE_WARBLADE); - - int nRanks = GetSkillRank(SKILL_PERFORM); - if (GetHasFeat(FEAT_DRAGONSONG, OBJECT_SELF)) nRanks+= 2; - int nChr = GetAbilityModifier(ABILITY_CHARISMA); - int nPerform = nRanks; - int nDuration = 10; //+ nChr; - - - effect eAttack; - effect eDamage; - effect eWill; - effect eFort; - effect eReflex; - effect eHP; - effect eAC; - effect eSkill; - - int nAttack; - int nDamage; - int nWill; - int nFort; - int nReflex; - int nHP; - int nAC; - int nSkill; - - // lingering song - if(GetHasFeat(FEAT_LINGERING_SONG)) - { - nDuration += 5; - } - - //Check to see if the caster has Lasting Impression and increase duration. - if(GetHasFeat(FEAT_EPIC_LASTING_INSPIRATION)) - { - nDuration *= 10; - } - - //SpeakString("Level: " + IntToString(nLevel) + " Ranks: " + IntToString(nRanks)); - - - - if(nPerform >= 125 && nLevel >= 180) - { - nAttack = 36; - nDamage = 36; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 348; - nAC = 36; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 179) - { - nAttack = 36; - nDamage = 36; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 346; - nAC = 35; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 178) - { - nAttack = 35; - nDamage = 36; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 344; - nAC = 35; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 177) - { - nAttack = 35; - nDamage = 35; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 342; - nAC = 35; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 176) - { - nAttack = 35; - nDamage = 35; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 340; - nAC = 34; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 175) - { - nAttack = 34; - nDamage = 35; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 338; - nAC = 34; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 174) - { - nAttack = 34; - nDamage = 34; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 336; - nAC = 34; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 173) - { - nAttack = 34; - nDamage = 34; - nWill = 17; - nFort = 18; - nReflex = 18; - nHP = 334; - nAC = 34; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 172) - { - nAttack = 34; - nDamage = 34; - nWill = 17; - nFort = 17; - nReflex = 18; - nHP = 332; - nAC = 34; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 171) - { - nAttack = 34; - nDamage = 34; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 330; - nAC = 34; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 170) - { - nAttack = 34; - nDamage = 34; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 328; - nAC = 33; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 169) - { - nAttack = 33; - nDamage = 34; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 326; - nAC = 33; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 168) - { - nAttack = 33; - nDamage = 33; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 324; - nAC = 33; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 167) - { - nAttack = 33; - nDamage = 33; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 322; - nAC = 32; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 166) - { - nAttack = 32; - nDamage = 33; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 320; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 165) - { - nAttack = 32; - nDamage = 32; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 318; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 164) - { - nAttack = 32; - nDamage = 32; - nWill = 16; - nFort = 17; - nReflex = 17; - nHP = 316; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 163) - { - nAttack = 32; - nDamage = 32; - nWill = 16; - nFort = 16; - nReflex = 17; - nHP = 314; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 162) - { - nAttack = 32; - nDamage = 32; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 312; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 161) - { - nAttack = 31; - nDamage = 32; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 310; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 160) - { - nAttack = 31; - nDamage = 31; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 308; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 159) - { - nAttack = 30; - nDamage = 31; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 306; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 158) - { - nAttack = 30; - nDamage = 30; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 304; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 157) - { - nAttack = 30; - nDamage = 30; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 302; - nAC = 31; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 156) - { - nAttack = 29; - nDamage = 30; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 300; - nAC = 31; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 155) - { - nAttack = 29; - nDamage = 29; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 298; - nAC = 31; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 154) - { - nAttack = 29; - nDamage = 29; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 296; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 153) - { - nAttack = 29; - nDamage = 28; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 294; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 152) - { - nAttack = 29; - nDamage = 28; - nWill = 15; - nFort = 16; - nReflex = 16; - nHP = 292; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 151) - { - nAttack = 29; - nDamage = 28; - nWill = 15; - nFort = 15; - nReflex = 16; - nHP = 290; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 150) - { - nAttack = 29; - nDamage = 28; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 288; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 149) - { - nAttack = 29; - nDamage = 28; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 286; - nAC = 29; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 148) - { - nAttack = 28; - nDamage = 28; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 284; - nAC = 29; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 147) - { - nAttack = 28; - nDamage = 27; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 282; - nAC = 29; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 146) - { - nAttack = 28; - nDamage = 27; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 280; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 145) - { - nAttack = 27; - nDamage = 27; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 278; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 144) - { - nAttack = 27; - nDamage = 26; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 276; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 143) - { - nAttack = 27; - nDamage = 26; - nWill = 14; - nFort = 15; - nReflex = 15; - nHP = 274; - nAC = 28; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 142) - { - nAttack = 27; - nDamage = 26; - nWill = 14; - nFort = 14; - nReflex = 15; - nHP = 272; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 141) - { - nAttack = 27; - nDamage = 26; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 270; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 140) - { - nAttack = 27; - nDamage = 26; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 268; - nAC = 27; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 139) - { - nAttack = 27; - nDamage = 25; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 266; - nAC = 27; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 138) - { - nAttack = 27; - nDamage = 25; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 264; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 137) - { - nAttack = 26; - nDamage = 25; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 262; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 136) - { - nAttack = 26; - nDamage = 24; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 260; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 135) - { - nAttack = 26; - nDamage = 24; - nWill = 13; - nFort = 14; - nReflex = 14; - nHP = 258; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 134) - { - nAttack = 26; - nDamage = 24; - nWill = 13; - nFort = 13; - nReflex = 14; - nHP = 256; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 133) - { - nAttack = 26; - nDamage = 24; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 254; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 132) - { - nAttack = 26; - nDamage = 23; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 252; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 131) - { - nAttack = 26; - nDamage = 23; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 250; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 130) - { - nAttack = 25; - nDamage = 23; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 248; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 129) - { - nAttack = 25; - nDamage = 22; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 246; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 128) - { - nAttack = 25; - nDamage = 22; - nWill = 12; - nFort = 13; - nReflex = 13; - nHP = 244; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 127) - { - nAttack = 25; - nDamage = 22; - nWill = 12; - nFort = 12; - nReflex = 13; - nHP = 242; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 126) - { - nAttack = 25; - nDamage = 22; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 240; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 125) - { - nAttack = 25; - nDamage = 21; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 238; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 124) - { - nAttack = 24; - nDamage = 21; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 236; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 123) - { - nAttack = 24; - nDamage = 21; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 234; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 122) - { - nAttack = 24; - nDamage = 20; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 232; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 121) - { - nAttack = 23; - nDamage = 20; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 230; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 120) - { - nAttack = 23; - nDamage = 19; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 228; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 119) - { - nAttack = 23; - nDamage = 19; - nWill = 11; - nFort = 12; - nReflex = 12; - nHP = 226; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 118) - { - nAttack = 23; - nDamage = 19; - nWill = 11; - nFort = 11; - nReflex = 12; - nHP = 224; - nAC = 24; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 117) - { - nAttack = 23; - nDamage = 19; - nWill = 11; - nFort = 11; - nReflex = 11; - nHP = 222; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 116) - { - nAttack = 23; - nDamage = 19; - nWill = 11; - nFort = 11; - nReflex = 11; - nHP = 220; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 115) - { - nAttack = 22; - nDamage = 19; - nWill = 11; - nFort = 11; - nReflex = 11; - nHP = 218; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 114) - { - nAttack = 22; - nDamage = 18; - nWill = 11; - nFort = 11; - nReflex = 11; - nHP = 216; - nAC = 23; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 113) - { - nAttack = 22; - nDamage = 18; - nWill = 10; - nFort = 11; - nReflex = 11; - nHP = 214; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 112) - { - nAttack = 22; - nDamage = 18; - nWill = 10; - nFort = 10; - nReflex = 11; - nHP = 212; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 111) - { - nAttack = 22; - nDamage = 18; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 210; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 110) - { - nAttack = 22; - nDamage = 18; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 208; - nAC = 22; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 109) - { - nAttack = 22; - nDamage = 17; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 206; - nAC = 22; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 108) - { - nAttack = 21; - nDamage = 17; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 204; - nAC = 22; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 107) - { - nAttack = 21; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 202; - nAC = 22; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 106) - { - nAttack = 21; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 200; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 105) - { - nAttack = 21; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 198; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 104) - { - nAttack = 20; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 196; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 103) - { - nAttack = 20; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 194; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 102) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 192; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 101) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 190; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 100) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 188; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 99) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 186; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 98) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 184; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 97) - { - nAttack = 20; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 182; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 96) - { - nAttack = 19; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 180; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 95) - { - nAttack = 19; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 178; - nAC = 19; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 94) - { - nAttack = 19; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 176; - nAC = 19; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 93) - { - nAttack = 18; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 174; - nAC = 19; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 92) - { - nAttack = 18; - nDamage = 13; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 172; - nAC = 19; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 91) - { - nAttack = 18; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 170; - nAC = 19; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 90) - { - nAttack = 18; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 168; - nAC = 18; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 89) - { - nAttack = 18; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 166; - nAC = 18; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 88) - { - nAttack = 17; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 164; - nAC = 18; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 87) - { - nAttack = 17; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 162; - nAC = 18; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 86) - { - nAttack = 17; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 160; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 85) - { - nAttack = 17; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 158; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 84) - { - nAttack = 16; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 156; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 83) - { - nAttack = 15; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 154; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 82) - { - nAttack = 14; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 152; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 81) - { - nAttack = 14; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 150; - nAC = 16; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 80) - { - nAttack = 13; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 148; - nAC = 16; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 79) - { - nAttack = 12; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 146; - nAC = 16; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 78) - { - nAttack = 12; - nDamage = 11; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 144; - nAC = 16; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 77) - { - nAttack = 11; - nDamage = 11; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 142; - nAC = 16; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 76) - { - nAttack = 11; - nDamage = 11; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 140; - nAC = 15; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 75) - { - nAttack = 11; - nDamage = 10; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 138; - nAC = 15; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 74) - { - nAttack = 10; - nDamage = 10; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 136; - nAC = 15; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 73) - { - nAttack = 10; - nDamage = 10; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 134; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 72) - { - nAttack = 10; - nDamage = 10; - nWill = 9; - nFort = 10; - nReflex = 10; - nHP = 132; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 71) - { - nAttack = 10; - nDamage = 10; - nWill = 9; - nFort = 9; - nReflex = 10; - nHP = 130; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 70) - { - nAttack = 10; - nDamage = 10; - nWill = 9; - nFort = 9; - nReflex = 9; - nHP = 128; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 69) - { - nAttack = 10; - nDamage = 9; - nWill = 9; - nFort = 9; - nReflex = 9; - nHP = 126; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 68) - { - nAttack = 9; - nDamage = 9; - nWill = 9; - nFort = 9; - nReflex = 9; - nHP = 124; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 67) - { - nAttack = 9; - nDamage = 9; - nWill = 9; - nFort = 9; - nReflex = 9; - nHP = 122; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 66) - { - nAttack = 9; - nDamage = 9; - nWill = 8; - nFort = 9; - nReflex = 9; - nHP = 120; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 65) - { - nAttack = 9; - nDamage = 9; - nWill = 8; - nFort = 8; - nReflex = 9; - nHP = 118; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 64) - { - nAttack = 9; - nDamage = 9; - nWill = 8; - nFort = 8; - nReflex = 8; - nHP = 116; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 63) - { - nAttack = 9; - nDamage = 8; - nWill = 8; - nFort = 8; - nReflex = 8; - nHP = 114; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 62) - { - nAttack = 8; - nDamage = 8; - nWill = 8; - nFort = 8; - nReflex = 8; - nHP = 112; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 61) - { - nAttack = 8; - nDamage = 8; - nWill = 8; - nFort = 8; - nReflex = 8; - nHP = 110; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 60) - { - nAttack = 8; - nDamage = 8; - nWill = 7; - nFort = 8; - nReflex = 8; - nHP = 108; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 59) - { - nAttack = 8; - nDamage = 8; - nWill = 7; - nFort = 7; - nReflex = 8; - nHP = 106; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 58) - { - nAttack = 8; - nDamage = 8; - nWill = 7; - nFort = 7; - nReflex = 7; - nHP = 104; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 57) - { - nAttack = 8; - nDamage = 7; - nWill = 7; - nFort = 7; - nReflex = 7; - nHP = 102; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 56) - { - nAttack = 7; - nDamage = 7; - nWill = 7; - nFort = 7; - nReflex = 7; - nHP = 100; - nAC = 12; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 55) - { - nAttack = 7; - nDamage = 7; - nWill = 7; - nFort = 7; - nReflex = 7; - nHP = 98; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 54) - { - nAttack = 7; - nDamage = 7; - nWill = 6; - nFort = 7; - nReflex = 7; - nHP = 96; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 53) - { - nAttack = 7; - nDamage = 7; - nWill = 6; - nFort = 6; - nReflex = 7; - nHP = 94; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 52) - { - nAttack = 7; - nDamage = 7; - nWill = 6; - nFort = 6; - nReflex = 6; - nHP = 92; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 51) - { - nAttack = 6; - nDamage = 7; - nWill = 6; - nFort = 6; - nReflex = 6; - nHP = 90; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 50) - { - nAttack = 6; - nDamage = 6; - nWill = 6; - nFort = 6; - nReflex = 6; - nHP = 88; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 49) - { - nAttack = 6; - nDamage = 6; - nWill = 6; - nFort = 6; - nReflex = 6; - nHP = 86; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 48) - { - nAttack = 6; - nDamage = 6; - nWill = 5; - nFort = 6; - nReflex = 6; - nHP = 84; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 47) - { - nAttack = 6; - nDamage = 6; - nWill = 5; - nFort = 5; - nReflex = 6; - nHP = 82; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 46) - { - nAttack = 6; - nDamage = 6; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 80; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 45) - { - nAttack = 6; - nDamage = 5; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 78; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 44) - { - nAttack = 5; - nDamage = 5; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 76; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 43) - { - nAttack = 5; - nDamage = 5; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 74; - nAC = 9; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 42) - { - nAttack = 4; - nDamage = 5; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 72; - nAC = 9; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 41) - { - nAttack = 4; - nDamage = 4; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 70; - nAC = 9; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 40) - { - nAttack = 4; - nDamage = 4; - nWill = 4; - nFort = 5; - nReflex = 5; - nHP = 68; - nAC = 9; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 39) - { - nAttack = 4; - nDamage = 4; - nWill = 4; - nFort = 4; - nReflex = 5; - nHP = 66; - nAC = 8; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 38) - { - nAttack = 4; - nDamage = 4; - nWill = 4; - nFort = 4; - nReflex = 4; - nHP = 64; - nAC = 8; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 37) - { - nAttack = 3; - nDamage = 4; - nWill = 4; - nFort = 4; - nReflex = 4; - nHP = 62; - nAC = 8; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 36) - { - nAttack = 3; - nDamage = 4; - nWill = 4; - nFort = 3; - nReflex = 4; - nHP = 60; - nAC = 8; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 35) - { - nAttack = 3; - nDamage = 4; - nWill = 4; - nFort = 3; - nReflex = 3; - nHP = 58; - nAC = 7; - nSkill = 20; - } - if(nPerform >= 120 && nLevel >= 34) - { - nAttack = 3; - nDamage = 4; - nWill = 3; - nFort = 3; - nReflex = 3; - nHP = 56; - nAC = 7; - nSkill = 20; - } - if(nPerform >= 115 && nLevel >= 33) - { - nAttack = 3; - nDamage = 3; - nWill = 3; - nFort = 3; - nReflex = 3; - nHP = 54; - nAC = 7; - nSkill = 20; - } - if(nPerform >= 110 && nLevel >= 32) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 3; - nReflex = 3; - nHP = 52; - nAC = 7; - nSkill = 20; - } - if(nPerform >= 105 && nLevel >= 31) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 3; - nHP = 50; - nAC = 7; - nSkill = 20; - } - - if(nPerform >= 100 && nLevel >= 30) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 48; - nAC = 7; - nSkill = 19; - } - else if(nPerform >= 95 && nLevel >= 29) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 46; - nAC = 6; - nSkill = 18; - } - else if(nPerform >= 90 && nLevel >= 28) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 44; - nAC = 6; - nSkill = 17; - } - else if(nPerform >= 85 && nLevel >= 27) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 42; - nAC = 6; - nSkill = 16; - } - else if(nPerform >= 80 && nLevel >= 26) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 40; - nAC = 6; - nSkill = 15; - } - else if(nPerform >= 75 && nLevel >= 25) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 38; - nAC = 6; - nSkill = 14; - } - else if(nPerform >= 70 && nLevel >= 24) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 36; - nAC = 5; - nSkill = 13; - } - else if(nPerform >= 65 && nLevel >= 23) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 34; - nAC = 5; - nSkill = 12; - } - else if(nPerform >= 60 && nLevel >= 22) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 32; - nAC = 5; - nSkill = 11; - } - else if(nPerform >= 55 && nLevel >= 21) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 30; - nAC = 5; - nSkill = 9; - } - else if(nPerform >= 50 && nLevel >= 20) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 28; - nAC = 5; - nSkill = 8; - } - else if(nPerform >= 45 && nLevel >= 19) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 26; - nAC = 5; - nSkill = 7; - } - else if(nPerform >= 40 && nLevel >= 18) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 24; - nAC = 5; - nSkill = 6; - } - else if(nPerform >= 35 && nLevel >= 17) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 22; - nAC = 5; - nSkill = 5; - } - else if(nPerform >= 30 && nLevel >= 16) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 20; - nAC = 5; - nSkill = 4; - } - else if(nPerform >= 24 && nLevel >= 15) - { - nAttack = 2; - nDamage = 3; - nWill = 2; - nFort = 2; - nReflex = 2; - nHP = 16; - nAC = 4; - nSkill = 3; - } - else if(nPerform >= 21 && nLevel >= 14) - { - nAttack = 2; - nDamage = 3; - nWill = 1; - nFort = 1; - nReflex = 1; - nHP = 16; - nAC = 3; - nSkill = 2; - } - else if(nPerform >= 18 && nLevel >= 11) - { - nAttack = 2; - nDamage = 2; - nWill = 1; - nFort = 1; - nReflex = 1; - nHP = 8; - nAC = 2; - nSkill = 2; - } - else if(nPerform >= 15 && nLevel >= 8) - { - nAttack = 2; - nDamage = 2; - nWill = 1; - nFort = 1; - nReflex = 1; - nHP = 8; - nAC = 0; - nSkill = 1; - } - else if(nPerform >= 12 && nLevel >= 6) - { - nAttack = 1; - nDamage = 2; - nWill = 1; - nFort = 1; - nReflex = 1; - nHP = 0; - nAC = 0; - nSkill = 1; - } - else if(nPerform >= 9 && nLevel >= 3) - { - nAttack = 1; - nDamage = 2; - nWill = 1; - nFort = 1; - nReflex = 0; - nHP = 0; - nAC = 0; - nSkill = 0; - } - else if(nPerform >= 6 && nLevel >= 2) - { - nAttack = 1; - nDamage = 1; - nWill = 1; - nFort = 0; - nReflex = 0; - nHP = 0; - nAC = 0; - nSkill = 0; - } - else if(nPerform >= 3 && nLevel >= 1) - { - nAttack = 1; - nDamage = 1; - nWill = 0; - nFort = 0; - nReflex = 0; - nHP = 0; - nAC = 0; - nSkill = 0; - } - effect eVis = EffectVisualEffect(VFX_DUR_BARD_SONG); - effect eLink; - - eAttack = EffectAttackIncrease(nAttack); - eDamage = EffectDamageIncrease(nDamage, DAMAGE_TYPE_BLUDGEONING); - - - if(GetLocalInt(OBJECT_SELF, "DragonFireInspOn")) - { - eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - } - else - { - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - eLink = EffectLinkEffects(eAttack, eDamage); - eLink = EffectLinkEffects(eLink, eDur); - } - - if(nWill > 0) - { - eWill = EffectSavingThrowIncrease(SAVING_THROW_WILL, nWill); - eLink = EffectLinkEffects(eLink, eWill); - } - if(nFort > 0) - { - eFort = EffectSavingThrowIncrease(SAVING_THROW_FORT, nFort); - eLink = EffectLinkEffects(eLink, eFort); - } - if(nReflex > 0) - { - eReflex = EffectSavingThrowIncrease(SAVING_THROW_REFLEX, nReflex); - eLink = EffectLinkEffects(eLink, eReflex); - } - if(nHP > 0) - { - //SpeakString("HP Bonus " + IntToString(nHP)); - eHP = EffectTemporaryHitpoints(nHP); -// eLink = EffectLinkEffects(eLink, eHP); - } - if(nAC > 0) - { - eAC = EffectACIncrease(nAC, AC_DODGE_BONUS); - eLink = EffectLinkEffects(eLink, eAC); - } - if(nSkill > 0) - { - eSkill = EffectSkillIncrease(SKILL_ALL_SKILLS, nSkill); - eLink = EffectLinkEffects(eLink, eSkill); - } - - effect eImpact = EffectVisualEffect(VFX_IMP_HEAD_SONIC); - effect eFNF = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, GetLocation(OBJECT_SELF)); - - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); - - eHP = ExtraordinaryEffect(eHP); - eLink = ExtraordinaryEffect(eLink); - - int nRace; - - while(GetIsObjectValid(oTarget)) - { - // * GZ Oct 2003: If we are silenced, we can not benefit from bard song - if (!PRCGetHasEffect(EFFECT_TYPE_SILENCE,oTarget) && !PRCGetHasEffect(EFFECT_TYPE_DEAF,oTarget)) - { - RemoveSongEffects(GetSpellId(),OBJECT_SELF,oTarget); - nRace = MyPRCGetRacialType(oTarget); - - // Undead and Constructs are immune to mind effecting abilities. - // A bard with requiem can effect undead - if ((nRace == RACIAL_TYPE_UNDEAD && GetHasFeat(FEAT_REQUIEM, OBJECT_SELF)) || (nRace != RACIAL_TYPE_UNDEAD && nRace != RACIAL_TYPE_CONSTRUCT) || GetIsWarforged(oTarget)) - { - // Even with requiem, they have half duration - if (nRace == RACIAL_TYPE_UNDEAD) nDuration /= 2; - - if(oTarget == OBJECT_SELF) - { - effect eLinkBard = EffectLinkEffects(eLink, eVis); - eLinkBard = ExtraordinaryEffect(eLinkBard); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLinkBard, oTarget, RoundsToSeconds(nDuration)); - //StoreSongRecipient(oTarget, OBJECT_SELF, GetSpellId(), nDuration); - if (nHP > 0) - { - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, RoundsToSeconds(nDuration)); - } - if(GetLocalInt(OBJECT_SELF, "DragonFireInspOn")) - { - ApplyDragonfire(nAttack, nDuration, OBJECT_SELF, OBJECT_SELF); - } - } - else if(GetIsFriend(oTarget)) - { - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oTarget); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - //StoreSongRecipient(oTarget, OBJECT_SELF, GetSpellId(), nDuration); - if (nHP > 0) - { - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, RoundsToSeconds(nDuration)); - } - if(GetLocalInt(OBJECT_SELF, "DragonFireInspOn")) - { - ApplyDragonfire(nAttack, nDuration, oTarget, OBJECT_SELF); - } - } - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); - } -//:: Crystal Echoblade - effect eEffect = GetFirstEffect(OBJECT_SELF); - - //:: Prevent stacking - while(GetIsEffectValid(eEffect)) - { - if(GetEffectTag(eEffect) == "Echoblade") - RemoveEffect(OBJECT_SELF, eEffect); - eEffect = GetNextEffect(OBJECT_SELF); - } - - if(IPGetHasItemPropertyByConst(ITEM_PROPERTY_ECHOBLADE, GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, OBJECT_SELF)) || //:: 104/*ITEM_PROPERTY_ECHOBLADE*/ - (IPGetHasItemPropertyByConst(ITEM_PROPERTY_ECHOBLADE, GetItemInSlot(INVENTORY_SLOT_LEFTHAND, OBJECT_SELF)))) - { - int nSonic = IPGetDamageBonusConstantFromNumber(nLevel / 2); - effect eEchoblade = EffectDamageIncrease(nSonic, DAMAGE_TYPE_SONIC); - eEchoblade = ExtraordinaryEffect(eEchoblade); - eEchoblade = TagEffect(eEchoblade, "Echoblade"); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEchoblade, OBJECT_SELF, RoundsToSeconds(nDuration)); - } -} diff --git a/_haks/poa_exp_ability/nw_s2_divprot.ncs b/_haks/poa_exp_ability/nw_s2_divprot.ncs deleted file mode 100644 index 814b1613..00000000 Binary files a/_haks/poa_exp_ability/nw_s2_divprot.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s2_divprot.nss b/_haks/poa_exp_ability/nw_s2_divprot.nss deleted file mode 100644 index fff40abc..00000000 --- a/_haks/poa_exp_ability/nw_s2_divprot.nss +++ /dev/null @@ -1,45 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Divine Protection -//:: NW_S2_DivProt.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Makes the target creature invisible to hostile - creatures unless they make a Will Save to ignore - the Sanctuary Effect -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 8, 2002 -//::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" -void main() -{ - //if (WildMagicOverride()) { return; } - -//:: Declare major variables - object oNPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - effect eVis = EffectVisualEffect(VFX_DUR_SANCTUARY); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - int nDC = 10 + GetAbilityModifier(ABILITY_CHARISMA) + GetLevelByTypeDivine(oNPC); - effect eSanc = EffectSanctuary(nDC); - - effect eLink = EffectLinkEffects(eVis, eSanc); - eLink = EffectLinkEffects(eLink, eDur); - //Fire cast spell at event for the specified target - SignalEvent(OBJECT_SELF, EventSpellCastAt(oNPC, SPELLABILITY_DIVINE_PROTECTION, FALSE)); - - int nDuration = GetLevelByTypeDivine(oNPC); - //Enter Metamagic conditions - int nMetaMagic = PRCGetMetaMagicFeat(); - if (nMetaMagic == METAMAGIC_EXTEND) - { - nDuration = nDuration *2; //Duration is +100% - } - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); -} - diff --git a/_haks/poa_exp_ability/nw_s2_elemshape.ncs b/_haks/poa_exp_ability/nw_s2_elemshape.ncs deleted file mode 100644 index f0ff6f9b..00000000 Binary files a/_haks/poa_exp_ability/nw_s2_elemshape.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s2_elemshape.nss b/_haks/poa_exp_ability/nw_s2_elemshape.nss deleted file mode 100644 index 1eb86b5c..00000000 --- a/_haks/poa_exp_ability/nw_s2_elemshape.nss +++ /dev/null @@ -1,357 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Elemental Shape -//:: NW_S2_ElemShape -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Allows the Druid to change into elemental forms. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 22, 2002 -//::////////////////////////////////////////////// -//:: Modified By: Iznoghoud - January 19 2004 -/* -What this script changes: -Allows druid elemental shapes to get stacking item properties carried over correctly -just like shifters. -See Iznoghoud's x2_s2_gwildshp script for an in-detail description. -Added fix for a Bioware Bug: Druids now get elder wildshapes at level 20 and above, -not just when exactly level 20. -*/ -//::////////////////////////////////////////////// - -#include "ws_inc_shifter" -//#include "x3_inc_horse" -#include "prc_alterations" -#include "pnp_shft_poly" - -void elemental_shape_shift(object oPC, int nShape) -{ - string sResRef = Get2DACache("prc_polymorph", "ResRef", nShape); - StoreCurrentAppearanceAsTrueAppearance(oPC, TRUE); - ShiftIntoResRef(oPC, SHIFTER_TYPE_DRUID, sResRef, TRUE); -} -void main() -{ - -if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) -{ - - FloatingTextStringOnCreature("All spells fizzle in town.", OBJECT_SELF); - - return; -} - //Declare major variables - int nSpell = GetSpellId(); - object oTarget = PRCGetSpellTargetObject(); - effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); - effect ePoly; - int nPoly; - int nMetaMagic = GetMetaMagicFeat(); - int nDuration = GetCasterLevel(OBJECT_SELF); - int bElder = FALSE; - if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) - { // check to see if abort due to being mounted - if (PRCHorseGetIsMounted(oTarget)) - { // abort - if (GetIsPC(oTarget)) FloatingTextStrRefOnCreature(111982,oTarget,FALSE); - return; - } // abort - } // check to see if abort due to being mounted - - //this command will make shore that polymorph plays nice with the shifter - ShifterCheck(OBJECT_SELF); - - int nShape = GetPersistantLocalInt(OBJECT_SELF, PRC_PNP_SHIFTING + IntToString(nSpell)); - if(nShape > 0) - { - elemental_shape_shift(OBJECT_SELF, nShape); - return; - } - //Enter Metamagic conditions - if (nMetaMagic == METAMAGIC_EXTEND) - { - nDuration = nDuration *2; //Duration is +100% - } - if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) - { - bElder = TRUE; - } - //Determine Polymorph subradial type - if(bElder == FALSE) - { - if(nSpell == 397) - { - nPoly = POLYMORPH_TYPE_HUGE_FIRE_ELEMENTAL; - } - else if (nSpell == 398) - { - nPoly = POLYMORPH_TYPE_HUGE_WATER_ELEMENTAL; - } - else if (nSpell == 399) - { - nPoly = POLYMORPH_TYPE_HUGE_EARTH_ELEMENTAL; - } - else if (nSpell == 400) - { - nPoly = POLYMORPH_TYPE_HUGE_AIR_ELEMENTAL; - } - } - else - { - if(nSpell == 397) - { - nPoly = POLYMORPH_TYPE_ELDER_FIRE_ELEMENTAL; - } - else if (nSpell == 398) - { - nPoly = POLYMORPH_TYPE_ELDER_WATER_ELEMENTAL; - } - else if (nSpell == 399) - { - nPoly = POLYMORPH_TYPE_ELDER_EARTH_ELEMENTAL; - } - else if (nSpell == 400) - { - nPoly = POLYMORPH_TYPE_ELDER_AIR_ELEMENTAL; - } - } - - int bWeapon; - int bArmor; - int bItems; - int bCopyGlovesToClaws = FALSE; - - bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; - - if ( WS_ALWAYS_COPY_ARMOR_PROPS ) - bArmor = TRUE; - else - bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; - - if ( WS_ALWAYS_COPY_ITEM_PROPS ) - bItems = TRUE; - else - bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; - - // Send message to PC about which items get merged to this form - string sMerge; - sMerge = "Merged: "; // : This is a color code that makes the text behind it sort of light blue. - if(bArmor) sMerge += "Armor, Helmet, Shield"; - if(bItems) sMerge += ", Rings, Amulet, Cloak, Boots, Belt, Bracers"; - if( bWeapon || WS_COPY_WEAPON_PROPS_TO_UNARMED == 1 ) - sMerge += ", Weapon"; - else if ( WS_COPY_WEAPON_PROPS_TO_UNARMED == 2 ) - sMerge += ", Gloves to unarmed attacks"; - else if (WS_COPY_WEAPON_PROPS_TO_UNARMED == 3 ) - sMerge += ", Weapon (if you had one equipped) or gloves to unarmed attacks"; - else - sMerge += ", No weapon or gloves to unarmed attacks"; - SendMessageToPC(oTarget,sMerge + "."); - - // Store which items should transfer to this polymorph type. (For exportallchar scripts) - SetLocalInt(oTarget, "GW_PolyID", nPoly); - SetLocalInt(oTarget, "GW_bWeapon", bWeapon ); - SetLocalInt(oTarget, "GW_bArmor", bArmor ); - SetLocalInt(oTarget, "GW_bItems", bItems ); - - //-------------------------------------------------------------------------- - // Store the old objects so we can access them after the character has - // changed into his new form - //-------------------------------------------------------------------------- - object oWeaponOld; - object oArmorOld; - object oRing1Old ; - object oRing2Old; - object oAmuletOld; - object oCloakOld ; - object oBootsOld ; - object oBeltOld ; - object oHelmetOld; - object oShield ; - object oBracerOld; - object oHideOld; - //Assume the normal shape doesn't have a creature skin object. - //If using a subracesystem or something else that places a skin on the normal shape - //another condition is needed to decide whether or not to store current items. - //One way could be to scan all effects to see whether one is a polymorph effect. - int nPolyed = GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF)); - // If there is a creature armor see if it is a creature hide put - // on the unpolymorphed player by scanning for a polymorph effect. - if ( nPolyed ) - nPolyed = ( ScanForPolymorphEffect(OBJECT_SELF) != -2 ); - if(! nPolyed) - { - //if not polymorphed get items worn and store on player. - oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); - oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); - oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); - oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); - oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); - oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); - oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); - oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); - oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); - oBracerOld = GetItemInSlot(INVENTORY_SLOT_ARMS,OBJECT_SELF); - oHideOld = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - SetLocalObject(OBJECT_SELF,"GW_OldWeapon",oWeaponOld); - SetLocalObject(OBJECT_SELF,"GW_OldArmor",oArmorOld); - SetLocalObject(OBJECT_SELF,"GW_OldRing1",oRing1Old); - SetLocalObject(OBJECT_SELF,"GW_OldRing2",oRing2Old); - SetLocalObject(OBJECT_SELF,"GW_OldAmulet",oAmuletOld); - SetLocalObject(OBJECT_SELF,"GW_OldCloak",oCloakOld); - SetLocalObject(OBJECT_SELF,"GW_OldBoots",oBootsOld); - SetLocalObject(OBJECT_SELF,"GW_OldBelt",oBeltOld); - SetLocalObject(OBJECT_SELF,"GW_OldHelmet",oHelmetOld); - SetLocalObject(OBJECT_SELF,"GW_OldBracer",oBracerOld); - SetLocalObject(OBJECT_SELF,"GW_OldHide",oHideOld); - if (GetIsObjectValid(oShield)) - { - if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) - { - oShield = OBJECT_INVALID; - } - } - SetLocalObject(OBJECT_SELF,"GW_OldShield",oShield); - - } - else - { - //if already polymorphed use items stored earlier. - oWeaponOld = GetLocalObject(OBJECT_SELF,"GW_OldWeapon"); - oArmorOld = GetLocalObject(OBJECT_SELF,"GW_OldArmor"); - oRing1Old = GetLocalObject(OBJECT_SELF,"GW_OldRing1"); - oRing2Old = GetLocalObject(OBJECT_SELF,"GW_OldRing2"); - oAmuletOld = GetLocalObject(OBJECT_SELF,"GW_OldAmulet"); - oCloakOld = GetLocalObject(OBJECT_SELF,"GW_OldCloak"); - oBootsOld = GetLocalObject(OBJECT_SELF,"GW_OldBoots"); - oBeltOld = GetLocalObject(OBJECT_SELF,"GW_OldBelt"); - oHelmetOld = GetLocalObject(OBJECT_SELF,"GW_OldHelmet"); - oShield = GetLocalObject(OBJECT_SELF,"GW_OldShield"); - oBracerOld = GetLocalObject(OBJECT_SELF,"GW_OldBracer"); - oHideOld = GetLocalObject(OBJECT_SELF,"GW_OldHide"); - } - - //-------------------------------------------------------------------------- - // Here the actual polymorphing is done - //-------------------------------------------------------------------------- - ePoly = EffectPolymorph(nPoly); - //-------------------------------------------------------------------------- - // Iznoghoud: Link the stackable properties as permanent bonuses to the - // Polymorph effect, instead of putting them on the creature hide. They will - // properly disappear as soon as the polymorph is ended. - //-------------------------------------------------------------------------- - ePoly = AddStackablePropertiesToPoly ( oTarget, ePoly, bWeapon, bItems, bArmor, oArmorOld, oRing1Old, oRing2Old, oAmuletOld, oCloakOld, oBracerOld, oBootsOld, oBeltOld, oHelmetOld, oShield, oWeaponOld, oHideOld); - ePoly = ExtraordinaryEffect(ePoly); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration)); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); - //-------------------------------------------------------------------------- - // This code handles the merging of item properties - //-------------------------------------------------------------------------- - object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - object oClawLeft = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,OBJECT_SELF); - object oClawRight = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,OBJECT_SELF); - object oBite = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,OBJECT_SELF); - //-------------------------------------------------------------------------- - // ...Weapons - //-------------------------------------------------------------------------- - if (bWeapon) - { - //---------------------------------------------------------------------- - // GZ: 2003-10-20 - // Sorry, but I was forced to take that out, it was confusing people - // and there were problems with updating the stats sheet. - //---------------------------------------------------------------------- - /* if (!GetIsObjectValid(oWeaponOld)) - { - //------------------------------------------------------------------ - // If we had no weapon equipped before, remove the old weapon - // to allow monks to change into unarmed forms by not equipping any - // weapon before polymorphing - //------------------------------------------------------------------ - DestroyObject(oWeaponNew); - } - else*/ - { - //------------------------------------------------------------------ - // Merge item properties... - //------------------------------------------------------------------ - WildshapeCopyWeaponProperties(oTarget, oWeaponOld, oWeaponNew); - } - } - else { - switch ( WS_COPY_WEAPON_PROPS_TO_UNARMED ) - { - case 1: // Copy over weapon properties to claws/bite - WildshapeCopyNonStackProperties(oWeaponOld,oClawLeft, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oClawRight, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oBite, TRUE); - break; - case 2: // Copy over glove properties to claws/bite - WildshapeCopyNonStackProperties(oBracerOld,oClawLeft, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oClawRight, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oBite, FALSE); - bCopyGlovesToClaws = TRUE; - break; - case 3: // Copy over weapon properties to claws/bite if wearing a weapon, otherwise copy gloves - if ( GetIsObjectValid(oWeaponOld) ) - { - WildshapeCopyNonStackProperties(oWeaponOld,oClawLeft, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oClawRight, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oBite, TRUE); - } - else - { - WildshapeCopyNonStackProperties(oBracerOld,oClawLeft, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oClawRight, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oBite, FALSE); - bCopyGlovesToClaws = TRUE; - } - break; - default: // Do not copy over anything - break; - }; - } - //-------------------------------------------------------------------------- - // ...Armor - //-------------------------------------------------------------------------- - if (bArmor) - { - //---------------------------------------------------------------------- - // Merge item properties from armor and helmet... - //---------------------------------------------------------------------- - WildshapeCopyNonStackProperties(oArmorOld,oArmorNew); - WildshapeCopyNonStackProperties(oHelmetOld,oArmorNew); - WildshapeCopyNonStackProperties(oShield,oArmorNew); - WildshapeCopyNonStackProperties(oHideOld,oArmorNew); - } - //-------------------------------------------------------------------------- - // ...Magic Items - //-------------------------------------------------------------------------- - if (bItems) - { - //---------------------------------------------------------------------- - // Merge item properties from from rings, amulets, cloak, boots, belt - // Iz: And bracers, in case oBracerOld gets set to a valid object. - //---------------------------------------------------------------------- - WildshapeCopyNonStackProperties(oRing1Old,oArmorNew); - WildshapeCopyNonStackProperties(oRing2Old,oArmorNew); - WildshapeCopyNonStackProperties(oAmuletOld,oArmorNew); - WildshapeCopyNonStackProperties(oCloakOld,oArmorNew); - WildshapeCopyNonStackProperties(oBootsOld,oArmorNew); - WildshapeCopyNonStackProperties(oBeltOld,oArmorNew); - // Because Bracers can have On Hit Cast Spell type properties we should - // avoid copying the bracers twice. Otherwise the player can get that On - // Hit effect both when hitting, and getting hit. - if ( bCopyGlovesToClaws == FALSE ) - WildshapeCopyNonStackProperties(oBracerOld,oArmorNew); - } - -} diff --git a/_haks/poa_exp_ability/nw_s2_layonhand.ncs b/_haks/poa_exp_ability/nw_s2_layonhand.ncs deleted file mode 100644 index 71801673..00000000 Binary files a/_haks/poa_exp_ability/nw_s2_layonhand.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s2_layonhand.nss b/_haks/poa_exp_ability/nw_s2_layonhand.nss deleted file mode 100644 index 81a4865c..00000000 --- a/_haks/poa_exp_ability/nw_s2_layonhand.nss +++ /dev/null @@ -1,150 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Lay_On_Hands -//:: NW_S2_LayOnHand.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - The Paladin is able to heal his Chr Bonus times - his level. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Aug 15, 2001 -//:: Updated On: Oct 20, 2003 -//::////////////////////////////////////////////// - -#include "prc_inc_sp_tch" -void main() -{ - - object oTarget = PRCGetSpellTargetObject(); - int nChr = GetAbilityModifier(ABILITY_CHARISMA); - - // Added by Starlight 2004-5-14 - // Check whether the character has "Hand of A Healer Feat" and - // with 13+ Charisma - // If yes, +2 to Charisma Score during casting Lay On Hands - // i.e. +1 bonus to Charisma Modifier - if (GetAlignmentGoodEvil(OBJECT_SELF) == ALIGNMENT_GOOD){ - if (GetHasFeat(FEAT_HAND_HEALER)){ - nChr = nChr + 1; - } - } - // End of Hand of Healer Code - - if (nChr < 0) - { - nChr = 0; - } - int nLevel = GetLevelByClass(CLASS_TYPE_PALADIN); - - //-------------------------------------------------------------------------- - // July 2003: Add Divine Champion levels to lay on hands ability - //-------------------------------------------------------------------------- - nLevel += GetLevelByClass(CLASS_TYPE_DIVINECHAMPION); - nLevel += GetLevelByClass(CLASS_TYPE_HOSPITALER); - nLevel += GetLevelByClass(CLASS_TYPE_COC); - nLevel += GetEssentiaInvestedFeat(OBJECT_SELF, FEAT_AZURE_TOUCH); - nLevel += GetLevelByClass(CLASS_TYPE_HEALER); - nLevel += GetLevelByClass(CLASS_TYPE_COMBAT_MEDIC); - //-------------------------------------------------------------------------- - // Caluclate the amount to heal, min is 1 hp - //-------------------------------------------------------------------------- - int nHeal = nLevel * nChr; - if(nHeal <= 0) - { - nHeal = 1; - } - effect eHeal = EffectHeal(nHeal); - effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M); - effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE); - effect eEVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE); - effect eEVis2 = EffectVisualEffect(VFX_IMP_DESTRUCTION); - effect eDam; - int nTouch; - -// evil paladins should not heal non-undead, they should do damage, and heal undead. ~ Lock - - if (GetAlignmentGoodEvil(OBJECT_SELF) == ALIGNMENT_EVIL) - { - if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD || GetLevelByClass(CLASS_TYPE_UNDEAD,oTarget)>0 - || (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)) - { - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS, FALSE)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eEVis2, oTarget); - } - else - { - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS)); - //Make a ranged touch attack - nTouch = PRCDoMeleeTouchAttack(oTarget);; - - //---------------------------------------------------------------------- - // GZ: The PhB classifies Lay on Hands as spell like ability, so it is - // subject to SR. No more cheesy demi lich kills on touch, sorry. - //---------------------------------------------------------------------- - int nResist = PRCDoResistSpell(OBJECT_SELF, oTarget, nLevel + SPGetPenetr()); - if (nResist == 0 ) - { - if(nTouch > 0) - { - if(nTouch == 2) - { - nHeal *= 2; - } - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS)); - eDam = PRCEffectDamage(oTarget, nHeal, DAMAGE_TYPE_DIVINE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eEVis, oTarget); - } - } - } - } - - //-------------------------------------------------------------------------- - // A good-aligned paladin can use his lay on hands ability to damage undead creatures - // having undead class levels qualifies as undead as well - //-------------------------------------------------------------------------- - -if (GetAlignmentGoodEvil(OBJECT_SELF) == ALIGNMENT_GOOD || GetAlignmentGoodEvil(OBJECT_SELF) == ALIGNMENT_NEUTRAL) -{ - if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD || GetLevelByClass(CLASS_TYPE_UNDEAD,oTarget)>0 - || (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS)); - //Make a ranged touch attack - nTouch = PRCDoMeleeTouchAttack(oTarget);; - - //---------------------------------------------------------------------- - // GZ: The PhB classifies Lay on Hands as spell like ability, so it is - // subject to SR. No more cheesy demi lich kills on touch, sorry. - //---------------------------------------------------------------------- - int nResist = PRCDoResistSpell(OBJECT_SELF, oTarget, nLevel + SPGetPenetr()); - if (nResist == 0 ) - { - if(nTouch > 0) - { - if(nTouch == 2) - { - nHeal *= 2; - } - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS)); - eDam = PRCEffectDamage(oTarget, nHeal, DAMAGE_TYPE_DIVINE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); - } - } - } - else - { - - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS, FALSE)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } -} - -} - diff --git a/_haks/poa_exp_ability/nw_s2_wildshape.ncs b/_haks/poa_exp_ability/nw_s2_wildshape.ncs deleted file mode 100644 index 042cd51a..00000000 Binary files a/_haks/poa_exp_ability/nw_s2_wildshape.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s2_wildshape.nss b/_haks/poa_exp_ability/nw_s2_wildshape.nss deleted file mode 100644 index d0fa22ac..00000000 --- a/_haks/poa_exp_ability/nw_s2_wildshape.nss +++ /dev/null @@ -1,431 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Wild Shape -//:: NW_S2_WildShape -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Allows the Druid to change into animal forms. - - Updated: Sept 30 2003, Georg Z. - * Made Armor merge with druid to make forms - more useful. - -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 22, 2002 -//::////////////////////////////////////////////// -//:: Modified By: Iznoghoud - January 19 2004 -/* -What this script changes: -Allows druid wildshapes to get stacking item properties carried over correctly -just like shifters. -See Iznoghoud's x2_s2_gwildshp script for an in-detail description. -*/ -//::////////////////////////////////////////////// - -#include "ws_inc_shifter" -//#include "x3_inc_horse" -#include "prc_alterations" -#include "pnp_shft_poly" - -void wild_shape_shift(object oPC, int nShape) -{ - string sResRef = Get2DACache("prc_polymorph", "ResRef", nShape); - StoreCurrentAppearanceAsTrueAppearance(oPC, TRUE); - ShiftIntoResRef(oPC, SHIFTER_TYPE_DRUID, sResRef); -} - -void main() -{ - -//Override in town, no casting! -if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) -{ - - FloatingTextStringOnCreature("All spells fizzle in town.", OBJECT_SELF); - - return; -} - - //Declare major variables - int nSpell = GetSpellId(); - object oTarget = PRCGetSpellTargetObject(); - object oPC = OBJECT_SELF; - effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); - effect ePoly; - int nPoly; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDuration = GetLevelByClass(CLASS_TYPE_DRUID, oPC) - + GetLevelByClass(CLASS_TYPE_ARCANE_HIEROPHANT, oPC); - if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) - { // check to see if abort due to being mounted - if (PRCHorseGetIsMounted(oTarget)) - { // abort - if (GetIsPC(oTarget)) FloatingTextStrRefOnCreature(111982,oTarget,FALSE); - return; - } // abort - } // check to see if abort due to being mounted - - //Enter Metamagic conditions - if (nMetaMagic == METAMAGIC_EXTEND) - { - nDuration = nDuration *2; //Duration is +100% - } - - //this command will make shore that polymorph plays nice with the shifter - ShifterCheck(OBJECT_SELF); - - int nShape = GetPersistantLocalInt(oPC, PRC_PNP_SHIFTING + IntToString(nSpell)); - if(nShape > 0) - { - wild_shape_shift(oPC, nShape); - return; - } - //Determine Polymorph subradial type - if(nSpell == 401) - { - nPoly = POLYMORPH_TYPE_BROWN_BEAR; - if (nDuration >= 12) - { - nPoly = POLYMORPH_TYPE_DIRE_BROWN_BEAR; - } - } - else if (nSpell == 402) - { - nPoly = POLYMORPH_TYPE_PANTHER; - if (nDuration >= 12) - { - nPoly = POLYMORPH_TYPE_DIRE_PANTHER; - } - } - else if (nSpell == 403) - { - nPoly = POLYMORPH_TYPE_WOLF; - - if (nDuration >= 12) - { - nPoly = POLYMORPH_TYPE_DIRE_WOLF; - } - } - else if (nSpell == 404) - { - nPoly = POLYMORPH_TYPE_BOAR; - if (nDuration >= 12) - { - nPoly = POLYMORPH_TYPE_DIRE_BOAR; - } - } - else if (nSpell == 405) - { - nPoly = POLYMORPH_TYPE_BADGER; - if (nDuration >= 12) - { - nPoly = POLYMORPH_TYPE_DIRE_BADGER; - } - } - - int bWeapon; - int bArmor; - int bItems; - int bCopyGlovesToClaws = FALSE; - - bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; - - if ( WS_ALWAYS_COPY_ARMOR_PROPS ) - bArmor = TRUE; - else - bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; - - if ( WS_ALWAYS_COPY_ITEM_PROPS ) - bItems = TRUE; - else - bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; - - // Send message to PC about which items get merged to this form - string sMerge; - sMerge = "Merged: "; // : This is a color code that makes the text behind it blue. - if(bArmor) sMerge += "Armor, Helmet, Shield"; - if(bItems) sMerge += ", Rings, Amulet, Cloak, Boots, Belt, Bracers"; - if( bWeapon || WS_COPY_WEAPON_PROPS_TO_UNARMED == 1 ) - sMerge += ", Weapon"; - else if ( WS_COPY_WEAPON_PROPS_TO_UNARMED == 2 ) - sMerge += ", Gloves to unarmed attacks"; - else if (WS_COPY_WEAPON_PROPS_TO_UNARMED == 3 ) - sMerge += ", Weapon (if you had one equipped) or gloves to unarmed attacks"; - else - sMerge += ", No weapon or gloves to unarmed attacks"; - SendMessageToPC(oTarget,sMerge + "."); - - // Store which items should transfer to this polymorph type. (For exportallchar scripts) - SetLocalInt(oTarget, "GW_PolyID", nPoly); - SetLocalInt(oTarget, "GW_bWeapon", bWeapon ); - SetLocalInt(oTarget, "GW_bArmor", bArmor ); - SetLocalInt(oTarget, "GW_bItems", bItems ); - - //-------------------------------------------------------------------------- - // Store the old objects so we can access them after the character has - // changed into his new form - //-------------------------------------------------------------------------- - object oWeaponOld; - object oArmorOld; - object oRing1Old ; - object oRing2Old; - object oAmuletOld; - object oCloakOld ; - object oBootsOld ; - object oBeltOld ; - object oHelmetOld; - object oShield ; - object oBracerOld; - object oHideOld; - //Assume the normal shape doesn't have a creature skin object. - //If using a subracesystem or something else that places a skin on the normal shape - //another condition is needed to decide whether or not to store current items. - //One way could be to scan all effects to see whether one is a polymorph effect. - int nPolyed = GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF)); - // If there is a creature armor see if it is a creature hide put - // on the unpolymorphed player by scanning for a polymorph effect. - if ( nPolyed ) - nPolyed = ( ScanForPolymorphEffect(OBJECT_SELF) != -2 ); - if(! nPolyed) - { - //if not polymorphed get items worn and store on player. - oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); - oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); - oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); - oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); - oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); - oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); - oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); - oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); - oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); - oBracerOld = GetItemInSlot(INVENTORY_SLOT_ARMS,OBJECT_SELF); - oHideOld = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - SetLocalObject(OBJECT_SELF,"GW_OldWeapon",oWeaponOld); - SetLocalObject(OBJECT_SELF,"GW_OldArmor",oArmorOld); - SetLocalObject(OBJECT_SELF,"GW_OldRing1",oRing1Old); - SetLocalObject(OBJECT_SELF,"GW_OldRing2",oRing2Old); - SetLocalObject(OBJECT_SELF,"GW_OldAmulet",oAmuletOld); - SetLocalObject(OBJECT_SELF,"GW_OldCloak",oCloakOld); - SetLocalObject(OBJECT_SELF,"GW_OldBoots",oBootsOld); - SetLocalObject(OBJECT_SELF,"GW_OldBelt",oBeltOld); - SetLocalObject(OBJECT_SELF,"GW_OldHelmet",oHelmetOld); - SetLocalObject(OBJECT_SELF,"GW_OldBracer",oBracerOld); - SetLocalObject(OBJECT_SELF,"GW_OldHide",oHideOld); - if (GetIsObjectValid(oShield)) - { - if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) - { - oShield = OBJECT_INVALID; - } - } - SetLocalObject(OBJECT_SELF,"GW_OldShield",oShield); - - } - else - { - //if already polymorphed use items stored earlier. - oWeaponOld = GetLocalObject(OBJECT_SELF,"GW_OldWeapon"); - oArmorOld = GetLocalObject(OBJECT_SELF,"GW_OldArmor"); - oRing1Old = GetLocalObject(OBJECT_SELF,"GW_OldRing1"); - oRing2Old = GetLocalObject(OBJECT_SELF,"GW_OldRing2"); - oAmuletOld = GetLocalObject(OBJECT_SELF,"GW_OldAmulet"); - oCloakOld = GetLocalObject(OBJECT_SELF,"GW_OldCloak"); - oBootsOld = GetLocalObject(OBJECT_SELF,"GW_OldBoots"); - oBeltOld = GetLocalObject(OBJECT_SELF,"GW_OldBelt"); - oHelmetOld = GetLocalObject(OBJECT_SELF,"GW_OldHelmet"); - oShield = GetLocalObject(OBJECT_SELF,"GW_OldShield"); - oBracerOld = GetLocalObject(OBJECT_SELF,"GW_OldBracer"); - oHideOld = GetLocalObject(OBJECT_SELF,"GW_OldHide"); - } - - //-------------------------------------------------------------------------- - // Here the actual polymorphing is done - //-------------------------------------------------------------------------- - ePoly = EffectPolymorph(nPoly); - //-------------------------------------------------------------------------- - // Iznoghoud: Link the stackable properties as permanent bonuses to the - // Polymorph effect, instead of putting them on the creature hide. They will - // properly disappear as soon as the polymorph is ended. - //-------------------------------------------------------------------------- - ePoly = AddStackablePropertiesToPoly ( oTarget, ePoly, bWeapon, bItems, bArmor, oArmorOld, oRing1Old, oRing2Old, oAmuletOld, oCloakOld, oBracerOld, oBootsOld, oBeltOld, oHelmetOld, oShield, oWeaponOld, oHideOld); - ePoly = ExtraordinaryEffect(ePoly); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration)); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); - //-------------------------------------------------------------------------- - // This code handles the merging of item properties - //-------------------------------------------------------------------------- - object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - object oClawLeft = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,OBJECT_SELF); - object oClawRight = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,OBJECT_SELF); - object oBite = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,OBJECT_SELF); - //-------------------------------------------------------------------------- - // ...Weapons - //-------------------------------------------------------------------------- - if (bWeapon) - { - //---------------------------------------------------------------------- - // GZ: 2003-10-20 - // Sorry, but I was forced to take that out, it was confusing people - // and there were problems with updating the stats sheet. - //---------------------------------------------------------------------- - /* if (!GetIsObjectValid(oWeaponOld)) - { - //------------------------------------------------------------------ - // If we had no weapon equipped before, remove the old weapon - // to allow monks to change into unarmed forms by not equipping any - // weapon before polymorphing - //------------------------------------------------------------------ - DestroyObject(oWeaponNew); - } - else*/ - { - //------------------------------------------------------------------ - // Merge item properties... - //------------------------------------------------------------------ - WildshapeCopyWeaponProperties(oTarget, oWeaponOld,oWeaponNew); - } - } - else { - switch ( WS_COPY_WEAPON_PROPS_TO_UNARMED ) - { - case 1: // Copy over weapon properties to claws/bite - WildshapeCopyNonStackProperties(oWeaponOld,oClawLeft, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oClawRight, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oBite, TRUE); - break; - case 2: // Copy over glove properties to claws/bite - WildshapeCopyNonStackProperties(oBracerOld,oClawLeft, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oClawRight, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oBite, FALSE); - bCopyGlovesToClaws = TRUE; - break; - case 3: // Copy over weapon properties to claws/bite if wearing a weapon, otherwise copy gloves - if ( GetIsObjectValid(oWeaponOld) ) - { - WildshapeCopyNonStackProperties(oWeaponOld,oClawLeft, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oClawRight, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oBite, TRUE); - } - else - { - WildshapeCopyNonStackProperties(oBracerOld,oClawLeft, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oClawRight, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oBite, FALSE); - bCopyGlovesToClaws = TRUE; - } - break; - default: // Do not copy over anything - break; - }; - } - //-------------------------------------------------------------------------- - // ...Armor - //-------------------------------------------------------------------------- - if (bArmor) - { - //---------------------------------------------------------------------- - // Merge item properties from armor and helmet... - //---------------------------------------------------------------------- - WildshapeCopyNonStackProperties(oArmorOld,oArmorNew); - WildshapeCopyNonStackProperties(oHelmetOld,oArmorNew); - WildshapeCopyNonStackProperties(oShield,oArmorNew); - WildshapeCopyNonStackProperties(oHideOld,oArmorNew); - } - //-------------------------------------------------------------------------- - // ...Magic Items - //-------------------------------------------------------------------------- - if (bItems) - { - //---------------------------------------------------------------------- - // Merge item properties from from rings, amulets, cloak, boots, belt - // Iz: And bracers, in case oBracerOld gets set to a valid object. - //---------------------------------------------------------------------- - WildshapeCopyNonStackProperties(oRing1Old,oArmorNew); - WildshapeCopyNonStackProperties(oRing2Old,oArmorNew); - WildshapeCopyNonStackProperties(oAmuletOld,oArmorNew); - WildshapeCopyNonStackProperties(oCloakOld,oArmorNew); - WildshapeCopyNonStackProperties(oBootsOld,oArmorNew); - WildshapeCopyNonStackProperties(oBeltOld,oArmorNew); - // Because Bracers can have On Hit Cast Spell type properties we should - // avoid copying the bracers twice. Otherwise the player can get that On - // Hit effect both when hitting, and getting hit. - if ( bCopyGlovesToClaws == FALSE ) - WildshapeCopyNonStackProperties(oBracerOld,oArmorNew); - } - -} - - - - - - - - -//============================================================================================ -/* - - object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); - object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); - object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); - object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); - object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); - object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); - object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); - object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); - object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); - if (GetIsObjectValid(oShield)) - { - if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD) - { - oShield = OBJECT_INVALID; - } - } - - ClearAllActions(); // prevents an exploit - - - if (GetEssentiaInvestedFeat(OBJECT_SELF, FEAT_AZURE_WILD_SHAPE)) - ePoly = EffectLinkEffects(ePoly, EffectDamageIncrease(IPGetDamageBonusConstantFromNumber(GetEssentiaInvestedFeat(OBJECT_SELF, FEAT_AZURE_WILD_SHAPE)), DAMAGE_TYPE_BASE_WEAPON)); - - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration)); - - object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - - if (bWeapon) - { - IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); - } - if (bArmor) - { - IPWildShapeCopyItemProperties(oShield,oArmorNew); - IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); - IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); - } - if (bItems) - { - IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); - IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); - IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); - IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); - IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); - IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); - } - - DelayCommand(1.5,ActionCastSpellOnSelf(SPELL_SHAPE_INCREASE_DAMAGE)); -} -*/ diff --git a/_haks/poa_exp_ability/nw_s3_balordeth.ncs b/_haks/poa_exp_ability/nw_s3_balordeth.ncs deleted file mode 100644 index 19e752ba..00000000 Binary files a/_haks/poa_exp_ability/nw_s3_balordeth.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/nw_s3_balordeth.nss b/_haks/poa_exp_ability/nw_s3_balordeth.nss deleted file mode 100644 index 96d0afb2..00000000 --- a/_haks/poa_exp_ability/nw_s3_balordeth.nss +++ /dev/null @@ -1,62 +0,0 @@ -// HCR v3.2.0 - Execute default death script after fireball effects is complete. -//:://////////////////////////////////////////////////////////////////////////// -//:: FileName: NW_S3_BALORDETH -//:://////////////////////////////////////////////////////////////////////////// -/* - Fireball explosion does 50 damage to all within 20ft. -*/ -//:://////////////////////////////////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 9, 2002 -//:://////////////////////////////////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" -//:://////////////////////////////////////////////////////////////////////////// -void main() -{ - // Declare major variables. - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - float fDelay; - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - effect eDam; - - // Apply the fireball explosion. - effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL); - location lTarget = GetLocation(OBJECT_SELF); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); - - // Cycle through the targets until an invalid object is captured. - object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR); - while (GetIsObjectValid(oTarget)) - { - // Fire cast spell at event for the specified target. - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL)); - - // Calculate delay based on distance between explosion and the target. - fDelay = (GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20); - if (!PRCDoResistSpell(OBJECT_SELF, oTarget, FloatToInt(fDelay))) - { - // Adjust damage based on Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(50, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE); - if (nDamage > 0) - { - // Apply effects to the currently selected target. - eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - - // This visual effect is applied to the target object not the - // location as above. This visual effect represents the flame that - // erupts on the target not on the ground. - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - - // Select the next target. - oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR); - } - - // HCR 3.0 - Call default death script. - ExecuteScript("nw_c2_default7", OBJECT_SELF); -} -//:://////////////////////////////////////////////////////////////////////////// diff --git a/_haks/poa_exp_ability/prc_hexbl_comp_a.ncs b/_haks/poa_exp_ability/prc_hexbl_comp_a.ncs deleted file mode 100644 index 3ff27713..00000000 Binary files a/_haks/poa_exp_ability/prc_hexbl_comp_a.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/prc_hexbl_comp_a.nss b/_haks/poa_exp_ability/prc_hexbl_comp_a.nss deleted file mode 100644 index 65809ac8..00000000 --- a/_haks/poa_exp_ability/prc_hexbl_comp_a.nss +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Hexblade: Dark Companion - * 14/09/2005 - * Stratovarius - * Type of Feat: Class Specific - * Prerequisite: Hexblade level 4. - * Specifics: The Hexblade gains a dark companion. It is an illusionary creature that does not engage in combat, but all monsters near it take a -2 penalty to AC and Saves. - * Use: Selected. - */ - -#include "prc_class_const" - -void main() -{ - //Declare major variables - object oPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - - // Apply the Dark Companion penalties. - // Doesn't affect allies - if(!GetIsFriend(oTarget, oPC)) - { - int nPen = GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) > 20 ? 4 : 2; - - if(GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) > 40) - { - nPen =6; - } - - if(GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) >= 60) - { - nPen =8; - } - if(GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) >= 80) - { - nPen =10; - } - effect eLink = EffectSavingThrowDecrease(SAVING_THROW_ALL, nPen); - eLink = EffectLinkEffects(eLink, EffectACDecrease(nPen)); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/prc_hexbl_comp_c.ncs b/_haks/poa_exp_ability/prc_hexbl_comp_c.ncs deleted file mode 100644 index 6f21372e..00000000 Binary files a/_haks/poa_exp_ability/prc_hexbl_comp_c.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/prc_hexbl_comp_c.nss b/_haks/poa_exp_ability/prc_hexbl_comp_c.nss deleted file mode 100644 index c0d03697..00000000 --- a/_haks/poa_exp_ability/prc_hexbl_comp_c.nss +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Hexblade: Dark Companion - * 14/09/2005 - * Stratovarius - * Type of Feat: Class Specific - * Prerequisite: Hexblade level 4. - * Specifics: The Hexblade gains a dark companion. It is an illusionary creature that does not engage in combat, but all monsters near it take a -2 penalty to AC and Saves. - * Use: Selected. - */ - -#include "prc_class_const" - -void main() -{ - //Declare major variables - object oPC = GetAreaOfEffectCreator(); - int nPen = GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) > 20 ? 4 : 2; - - if(GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) > 40) - { - nPen =6; - } - - if(GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) >= 60) - { - nPen =8; - } - if(GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) >= 80) - { - nPen =10; - } - effect eLink = EffectSavingThrowDecrease(SAVING_THROW_ALL, nPen); - eLink = EffectLinkEffects(eLink, EffectACDecrease(nPen)); - - object oTarget = GetFirstInPersistentObject(OBJECT_SELF); - while(GetIsObjectValid(oTarget)) - { - // Apply the loss - // Doesn't affect allies - if(!GetIsFriend(oTarget, oPC)) - { - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0); - } - //Get next target. - oTarget = GetNextInPersistentObject(OBJECT_SELF); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/prc_hexbl_curse.ncs b/_haks/poa_exp_ability/prc_hexbl_curse.ncs deleted file mode 100644 index 14873a5d..00000000 Binary files a/_haks/poa_exp_ability/prc_hexbl_curse.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/prc_hexbl_curse.nss b/_haks/poa_exp_ability/prc_hexbl_curse.nss deleted file mode 100644 index 63e3b330..00000000 --- a/_haks/poa_exp_ability/prc_hexbl_curse.nss +++ /dev/null @@ -1,62 +0,0 @@ -/* - prc_hexbl_curse - - Afflicted creatures save or suffer a large penalty to stats. -*/ - -#include "prc_inc_combat" - -void main() -{ - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - if(GetHasFeatEffect(FEAT_HEXCURSE, oTarget)) - { - FloatingTextStrRefOnCreature(100775, oCaster, FALSE);//"Target already has this effect!" - IncrementRemainingFeatUses(oCaster, FEAT_HEXCURSE); - return; - } - - if(!TakeSwiftAction(oCaster)) - { - FloatingTextStringOnCreature("You can use this ability only once per round!", oCaster, FALSE); - IncrementRemainingFeatUses(oCaster, FEAT_HEXCURSE); - return; - } - - int nClass = GetLevelByClass(CLASS_TYPE_HEXBLADE, oCaster); - int nDC = 10 + GetAbilityModifier(ABILITY_CHARISMA, oCaster) + (nClass / 2); - int nDmgType = GetWeaponDamageType(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget)); - if(nDmgType == -1) nDmgType = DAMAGE_TYPE_BLUDGEONING; - effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE); - - int nPen = 2; - if (nClass > 96) nPen = 20; - else if (nClass > 88) nPen = 18; - else if (nClass > 76) nPen = 16; - else if (nClass > 68) nPen = 14; - else if (nClass > 56) nPen = 12; - else if (nClass > 48) nPen = 10; - else if (nClass > 36) nPen = 8; - else if (nClass > 18) nPen = 6; - else if (nClass >= 6) nPen = 4; - - //if(GetHasFeat(FEAT_EMPOWER_CURSE, oCaster)) - // nPen += 1; - - effect eLink = EffectLinkEffects(EffectAttackDecrease(nPen), EffectSavingThrowDecrease(SAVING_THROW_ALL, nPen)); - eLink = EffectLinkEffects(eLink, EffectDamageDecrease(nPen, nDmgType)); - eLink = EffectLinkEffects(eLink, EffectSkillDecrease(SKILL_ALL_SKILLS, nPen)); - eLink = SupernaturalEffect(eLink); - - //Make Will Save - if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC)) - { - //Apply Effect and VFX - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(1)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - else // Doesn't count as used if the target makes their save - IncrementRemainingFeatUses(oCaster, FEAT_HEXCURSE); -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/prc_kotmc_combat.ncs b/_haks/poa_exp_ability/prc_kotmc_combat.ncs deleted file mode 100644 index c6b3e46e..00000000 Binary files a/_haks/poa_exp_ability/prc_kotmc_combat.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/prc_kotmc_combat.nss b/_haks/poa_exp_ability/prc_kotmc_combat.nss deleted file mode 100644 index 68abba33..00000000 --- a/_haks/poa_exp_ability/prc_kotmc_combat.nss +++ /dev/null @@ -1,232 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Knight of the Middle Circle - Combat Sense -//:: prc_kotmc_combat.nss -//::////////////////////////////////////////////// -//:: Applies a temporary AC and Attack bonus vs -//:: monsters of the targets racial type -//::////////////////////////////////////////////// -//:: Created By: Stratovarius -//:: Created On: July 16, 2004 -//::////////////////////////////////////////////// -#include "inc_item_props" //adicionado por mim, pq na versao 3.5 do prc essa biblioteca nao estava aqui. -#include "prc_alterations" -#include "prc_class_const" - - -/* -//adicionado essa funcao direto do prc 2.2c do inc_item_props pq o prc mais recente nao tinha essa funcao ou eu nao achei -object GetPCSkin(object oPC); - - -object GetPCSkinKMC(object oPC) -{ - object oSkin = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC); - if (!GetIsObjectValid(oSkin)) - { - if ( GetHasItem(oPC, "base_prc_skin")) - { - oSkin = GetItemPossessedBy(oPC,"base_prc_skin"); - AssignCommand(oPC, ActionEquipItem(oSkin, INVENTORY_SLOT_CARMOUR)); - } - - //Added GetHasItem check to prevent creation of extra skins on module entry - else { - oSkin = CreateItemOnObject("base_prc_skin", oPC); - AssignCommand(oPC, ActionEquipItem(oSkin, INVENTORY_SLOT_CARMOUR)); - } - } - return oSkin; -} -*/ - - -void main() -{ - //Declare main variables. - object oPC = OBJECT_SELF; - object oSkin = GetPCSkin(oPC); - object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); - object oTarget = PRCGetSpellTargetObject(); - int nRace = MyPRCGetRacialType(oTarget); - int nClass = GetLevelByClass(CLASS_TYPE_KNIGHT_MIDDLECIRCLE, oPC) + GetLevelByClass(CLASS_TYPE_PALADIN, oPC); - int nDur = nClass + 3; - int nAC; - int nAttack; - - - - if (nClass >= 1) - { - nAC = 2; - nAttack = 2; - } - if (nClass >= 5) - { - nAC = 4; - nAttack = 4; - } - if (nClass >= 10) - { - nAC = 6; - nAttack = 6; - } - if (nClass >= 15) - { - nAC = 8; - nAttack = 8; - } - if (nClass >= 20) - { - nAC = 10; - nAttack = 10; - } - if (nClass >= 25) - { - nAC = 12; - nAttack = 12; - } - if (nClass >= 30) - { - nAC = 14; - nAttack = 14; - } - - if (nClass >= 35) - { - nAC = 16; - nAttack = 16; - } - - if (nClass >= 40) - { - nAC = 18; - nAttack = 18; - } - - if (nClass >= 45) - { - nAC = 20; - nAttack = 20; - } - - if (nClass >= 50) - { - nAC = 22; - nAttack = 22; - } - - if (nClass >= 55) - { - nAC = 24; - nAttack = 24; - } - - if (nClass >= 60) - { - nAC = 26; - nAttack = 26; - } - - if (nClass >= 65) - { - nAC = 28; - nAttack = 28; - } - - if (nClass >= 70) - { - nAC = 30; - nAttack = 30; - } - - if (nClass >= 75) - { - nAC = 32; - nAttack = 32; - } - - if (nClass >= 80) - { - nAC = 34; - nAttack = 34; - } - - - - - - - - -/* - //codigo antigo prc 2.2c - - if (GetLocalInt(oPC, "KOTMCCombat") == TRUE) return; - - effect eAttack = EffectAttackIncrease(nAttack); - effect eAC = EffectACIncrease(nAC); - - VersusRacialTypeEffect(eAttack, nRace); - VersusRacialTypeEffect(eAC, nRace); - - SetLocalInt(oPC, "KOTMCCombat", TRUE); - DelayCommand(RoundsToSeconds(nDur), DeleteLocalInt(oPC, "KOTMCCombat")); - */ - - - -/* //codigo prc 3.5 que nao funciona - - if (GetLocalInt(oPC, "KOTMCCombat") == TRUE) return; - - effect eAttack = EffectAttackIncrease(nAttack); - effect eAC = EffectACIncrease(nAC); - - eAttack = VersusRacialTypeEffect(eAttack, nRace); - eAC = VersusRacialTypeEffect(eAC, nRace); - - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAttack, oPC, RoundsToSeconds(nDur)); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAC, oPC, RoundsToSeconds(nDur)); - - SetLocalInt(oPC, "KOTMCCombat", TRUE); - DelayCommand(RoundsToSeconds(nDur), DeleteLocalInt(oPC, "KOTMCCombat")); - - */ - - - if (GetLocalInt(oPC, "KOTMCCombat") == TRUE) return; - - //effect eVis = EffectVisualEffect(VFX_IMP_GOOD_HELP); - effect eAC = EffectACIncrease(nAC); - - eAC = VersusRacialTypeEffect(eAC, nRace); - - effect eAttack = EffectAttackIncrease(nAttack); - - eAttack = VersusRacialTypeEffect(eAttack, nRace); - - - // effect eImmune = EffectImmunity(IMMUNITY_TYPE_MIND_SPELLS); - // eImmune = VersusAlignmentEffect(eImmune,ALIGNMENT_ALL, nAlign); - effect eDur = EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR); - effect eDur2 = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - - effect eLink = EffectLinkEffects( eAC, eAttack); - // eLink = EffectLinkEffects(eLink, eAC); - eLink = EffectLinkEffects(eLink, eDur); - eLink = EffectLinkEffects(eLink, eDur2); - - //Apply the VFX impact and effects - //Fire cast spell at event for the specified target - // SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_PROTECTION_FROM_EVIL, FALSE)); - //SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(nDur),TRUE,-1,nClass); - - SetLocalInt(oPC, "KOTMCCombat", TRUE); - DelayCommand(RoundsToSeconds(nDur), DeleteLocalInt(oPC, "KOTMCCombat")); - - - - - -} diff --git a/_haks/poa_exp_ability/psi_sk_manifmbld.ncs b/_haks/poa_exp_ability/psi_sk_manifmbld.ncs deleted file mode 100644 index 4fde1828..00000000 Binary files a/_haks/poa_exp_ability/psi_sk_manifmbld.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/psi_sk_manifmbld.nss b/_haks/poa_exp_ability/psi_sk_manifmbld.nss deleted file mode 100644 index 0110af2e..00000000 --- a/_haks/poa_exp_ability/psi_sk_manifmbld.nss +++ /dev/null @@ -1,430 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Soulknife: Manifest Mindblade -//:: psi_sk_manifmbld -//:://///////////////////////////////////////////// -/** @file Soulknife: Manifest Mindblade - Handles creation of mindblades. - - - @author Ornedan - @date Created - 07.04.2005 - @date Modified - 01.09.2005 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_combat" -#include "psi_inc_soulkn" - -int LOCAL_DEBUG = DEBUG; - -////////////////////////////////////////////////// -/* Function prototypes */ -////////////////////////////////////////////////// - -// Handles adding in the enhancement bonuses and specials -// ====================================================== -// oMbld mindblade item -void BuildMindblade(object oPC, object oMbld, int nMbldType); - - -void main() -{ - if(LOCAL_DEBUG) DoDebug("Starting psi_sk_manifmbld"); - object oPC = OBJECT_SELF; - object oMbld; - int nMbldType = GetPersistantLocalInt(oPC, MBLADE_SHAPE); - int nHand = GetPersistantLocalInt(oPC, MBLADE_HAND); - - // If this is the very first time a PC is manifesting a mindblade, initialise the hand to be main hand - if(!nHand) - { - nHand = INVENTORY_SLOT_RIGHTHAND; - SetPersistantLocalInt(oPC, MBLADE_HAND, INVENTORY_SLOT_RIGHTHAND); - } - - // Generate the item based on type selection - switch(nMbldType) - { - case MBLADE_SHAPE_DUAL_SHORTSWORDS: - //SendMessageToPC(oPC, "psi_sk_manifmbld: First of dual shortswords - "); - // The first of dual mindblades always goes to mainhand - nHand = INVENTORY_SLOT_RIGHTHAND; - case MBLADE_SHAPE_SHORTSWORD: - //SendMessageToPC(oPC, "psi_sk_manifmbld: Created shortsword"); - oMbld = CreateItemOnObject("prc_sk_mblade_ss", oPC); - break; - case MBLADE_SHAPE_LONGSWORD: - //SendMessageToPC(oPC, "psi_sk_manifmbld: Created longsword"); - oMbld = CreateItemOnObject("prc_sk_mblade_ls", oPC); - break; - case MBLADE_SHAPE_BASTARDSWORD: - //SendMessageToPC(oPC, "psi_sk_manifmbld: Created bastardsword"); - oMbld = CreateItemOnObject("prc_sk_mblade_bs", oPC); - break; - case MBLADE_SHAPE_RANGED: - //SendMessageToPC(oPC, "psi_sk_manifmbld: Created throwing mindblade"); - // Create one more mindblade than needed in order to bypass the BW bug of the last thrown weapon in a stack no longer being a valid object in the OnHitCast script - oMbld = CreateItemOnObject("prc_sk_mblade_th", oPC, (GetHasFeat(FEAT_MULTIPLE_THROW, oPC) ? GetMainHandAttacks(oPC) : 1) + 1); - break; - - default: - WriteTimestampedLogEntry("Invalid value in MBLADE_SHAPE for " + GetName(oPC) + ": " + IntToString(nMbldType)); - return; - } - - // Construct the bonuses - /*DelayCommand(0.25f, */BuildMindblade(oPC, oMbld, nMbldType)/*)*/; - - // check for existing one before equipping and destroy - if(GetStringLeft(GetTag(GetItemInSlot(nHand, oPC)), 14) == "prc_sk_mblade_") - MyDestroyObject(GetItemInSlot(nHand, oPC)); - // Force equip - AssignCommand(oPC, ActionEquipItem(oMbld, nHand)); - - // Hook the mindblade into OnHit event - AddEventScript(oMbld, EVENT_ITEM_ONHIT, "psi_sk_onhit", TRUE, FALSE); - - // Make even more sure the mindblade cannot be dropped - SetDroppableFlag(oMbld, FALSE); - SetItemCursedFlag(oMbld, TRUE); - - // Generate the second mindblade if set to dual shortswords - if(nMbldType == MBLADE_SHAPE_DUAL_SHORTSWORDS) - { - oMbld = CreateItemOnObject("prc_sk_mblade_ss", oPC); - - //SendMessageToPC(oPC, "psi_sk_manifmbld: Created second mindblade - is valid: " + (GetIsObjectValid(oMbld) ? "TRUE":"FALSE")); - - DelayCommand(0.5f, BuildMindblade(oPC, oMbld, nMbldType)); // Delay a bit to prevent a lag spike - //BuildMindblade(oPC, oMbld, nMbldType); - AssignCommand(oPC, ActionDoCommand(ActionEquipItem(oMbld, INVENTORY_SLOT_LEFTHAND))); - //AssignCommand(oPC, ActionEquipItem(oMbld, INVENTORY_SLOT_LEFTHAND)); - AddEventScript(oMbld, EVENT_ITEM_ONHIT, "psi_sk_onhit", TRUE, FALSE); - - SetDroppableFlag(oMbld, FALSE); - SetItemCursedFlag(oMbld, TRUE); - } - // Not dual-wielding, so delete the second mindblade if they have such - else - { - // Get the other hand - int nOtherHand; - if(nHand == INVENTORY_SLOT_RIGHTHAND) - nOtherHand = INVENTORY_SLOT_LEFTHAND; - else - nOtherHand = INVENTORY_SLOT_RIGHTHAND; - // Check it's contents and take action if necessary - if(GetStringLeft(GetTag(GetItemInSlot(nOtherHand, oPC)), 14) == "prc_sk_mblade_") - MyDestroyObject(GetItemInSlot(nOtherHand, oPC)); - } - -/* Now in their own script - psi_sk_clseval - // Hook psi_sk_event to the mindblade-related events it handles - AddEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, "psi_sk_event", TRUE, FALSE); - AddEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, "psi_sk_event", TRUE, FALSE); - AddEventScript(oPC, EVENT_ONUNAQUIREITEM, "psi_sk_event", TRUE, FALSE); - AddEventScript(oPC, EVENT_ONPLAYERDEATH, "psi_sk_event", TRUE, FALSE); - AddEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_sk_event", TRUE, FALSE); -*/ - if(LOCAL_DEBUG) DelayCommand(0.01f, DoDebug("Finished psi_sk_manifmbld")); // Wrap in delaycommand so that the game clock gets to update for the purposes of WriteTimestampedLogEntry -} - - -void BuildMindblade(object oPC, object oMbld, int nMbldType) -{ - /* Add normal stuff and VFX */ - /// Add enhancement bonus - int nSKLevel = GetLevelByClass(CLASS_TYPE_SOULKNIFE, oPC); -/* if(GetHasFeat(FEAT_PRACTICED_MIND_BLADE, oPC)){ - int nNonSoulKnifeLevels = GetHitDice(oPC) - nSKLevel; - nSKLevel += PRCMin(nNonSoulKnifeLevels, 4); - } */ - int nEnh; - // The first actual enhancement bonus is gained at L4, but the mindblade needs to - // have enhancement right from the beginning to pierce DR as per being magical - if(nSKLevel < 4) - { - nEnh = 1; - // The mindblade being magical should grant no benefits to attack or damage - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyAttackPenalty(1), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamagePenalty(1), oMbld); - } - else - { - nEnh = nSKLevel <= 20 ? - nSKLevel / 4: // Boni are granget +1 / 4 levels pre-epic - (nSKLevel - 20) / 5 + 5; // Boni are granted +1 / 5 levels epic - // Dual mindblades have one lower bonus - nEnh -= nMbldType == MBLADE_SHAPE_DUAL_SHORTSWORDS ? 1 : 0; - } - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyEnhancementBonus(nEnh), oMbld); - // In case of bastard sword, store the enhancement bonus for later for use in the 2-h handling code - if(nMbldType == MBLADE_SHAPE_BASTARDSWORD) - SetLocalInt(oMbld, "PRC_SK_BSwd_EnhBonus", nEnh); - - // Handle Greater Weapon Focus (mindblade) here. It grants +1 to attack with any shape of mindblade. - // Because of stacking issues, the actual value granted is enhancement bonus + 1. - if(GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_MINDBLADE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyAttackBonus(nEnh + 1), oMbld); - - /// Add in VFX - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyVisualEffect(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD ? ITEM_VISUAL_HOLY : - GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL ? ITEM_VISUAL_EVIL : - ITEM_VISUAL_SONIC - ), oMbld); - - /* Add in common feats */ - //string sTag = GetTag(oMbld); - // For the purposes of the rest of this function, dual shortswords is the same as single shortsword - if(nMbldType == MBLADE_SHAPE_DUAL_SHORTSWORDS) nMbldType = MBLADE_SHAPE_SHORTSWORD; - - // Weapon Focus - /* Every soulknife has this, so it's automatically on the weapons now. Uncomment if for some reason another class with the mindblade class feature is added - if(GetHasFeat(FEAT_WEAPON_FOCUS_MINDBLADE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(nMbldType == MBLADE_SHAPE_SHORTSWORD ? IP_CONST_FEAT_WEAPON_FOCUS_SHORT_SWORD : - nMbldType == MBLADE_SHAPE_LONGSWORD ? IP_CONST_FEAT_WEAPON_FOCUS_LONG_SWORD : - nMbldType == MBLADE_SHAPE_BASTARDSWORD ? IP_CONST_FEAT_WEAPON_FOCUS_BASTARD_SWORD : - IP_CONST_FEAT_WEAPON_FOCUS_THROWING_AXE - ), oMbld);*/ - // Improved Critical - if(GetHasFeat(FEAT_IMPROVED_CRITICAL_MINDBLADE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(nMbldType == MBLADE_SHAPE_SHORTSWORD ? IP_CONST_FEAT_IMPROVED_CRITICAL_SHORT_SWORD : - nMbldType == MBLADE_SHAPE_LONGSWORD ? IP_CONST_FEAT_IMPROVED_CRITICAL_LONG_SWORD : - nMbldType == MBLADE_SHAPE_BASTARDSWORD ? IP_CONST_FEAT_IMPROVED_CRITICAL_BASTARD_SWORD : - IP_CONST_FEAT_IMPROVED_CRITICAL_THROWING_AXE - ), oMbld); - // Overwhelming Critical - if(GetHasFeat(FEAT_OVERWHELMING_CRITICAL_MINDBLADE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(nMbldType == MBLADE_SHAPE_SHORTSWORD ? IP_CONST_FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSWORD : - nMbldType == MBLADE_SHAPE_LONGSWORD ? IP_CONST_FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD : - nMbldType == MBLADE_SHAPE_BASTARDSWORD ? IP_CONST_FEAT_EPIC_OVERWHELMING_CRITICAL_BASTARDSWORD : - IP_CONST_FEAT_EPIC_OVERWHELMING_CRITICAL_THROWINGAXE - ), oMbld); - // Devastating Critical - if(GetHasFeat(FEAT_DEVASTATING_CRITICAL_MINDBLADE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(nMbldType == MBLADE_SHAPE_SHORTSWORD ? IP_CONST_FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSWORD : - nMbldType == MBLADE_SHAPE_LONGSWORD ? IP_CONST_FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD : - nMbldType == MBLADE_SHAPE_BASTARDSWORD ? IP_CONST_FEAT_EPIC_DEVASTATING_CRITICAL_BASTARDSWORD : - IP_CONST_FEAT_EPIC_DEVASTATING_CRITICAL_THROWINGAXE - ), oMbld); - // Weapon Specialization - if(GetHasFeat(FEAT_WEAPON_SPECIALIZATION_MINDBLADE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(nMbldType == MBLADE_SHAPE_SHORTSWORD ? IP_CONST_FEAT_WEAPON_SPECIALIZATION_SHORT_SWORD : - nMbldType == MBLADE_SHAPE_LONGSWORD ? IP_CONST_FEAT_WEAPON_SPECIALIZATION_LONG_SWORD : - nMbldType == MBLADE_SHAPE_BASTARDSWORD ? IP_CONST_FEAT_WEAPON_SPECIALIZATION_BASTARD_SWORD : - IP_CONST_FEAT_WEAPON_SPECIALIZATION_THROWING_AXE - ), oMbld); - // Epic Weapon Focus - if(GetHasFeat(FEAT_EPIC_WEAPON_FOCUS_MINDBLADE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(nMbldType == MBLADE_SHAPE_SHORTSWORD ? IP_CONST_FEAT_EPIC_WEAPON_FOCUS_SHORT_SWORD : - nMbldType == MBLADE_SHAPE_LONGSWORD ? IP_CONST_FEAT_EPIC_WEAPON_FOCUS_LONG_SWORD : - nMbldType == MBLADE_SHAPE_BASTARDSWORD ? IP_CONST_FEAT_EPIC_WEAPON_FOCUS_BASTARD_SWORD : - IP_CONST_FEAT_EPIC_WEAPON_FOCUS_THROWING_AXE - ), oMbld); - // Epic Weapon Specialization - if(GetHasFeat(FEAT_EPIC_WEAPON_SPECIALIZATION_MINDBLADE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(nMbldType == MBLADE_SHAPE_SHORTSWORD ? IP_CONST_FEAT_EPIC_WEAPON_SPECIALIZATION_SHORT_SWORD : - nMbldType == MBLADE_SHAPE_LONGSWORD ? IP_CONST_FEAT_EPIC_WEAPON_SPECIALIZATION_LONG_SWORD : - nMbldType == MBLADE_SHAPE_BASTARDSWORD ? IP_CONST_FEAT_EPIC_WEAPON_SPECIALIZATION_BASTARD_SWORD : - IP_CONST_FEAT_EPIC_WEAPON_SPECIALIZATION_THROWING_AXE - ), oMbld); - // Weapon of Choice - if(GetHasFeat(FEAT_WEAPON_OF_CHOICE_MINDBLADE, oPC) && nMbldType != MBLADE_SHAPE_RANGED) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(nMbldType == MBLADE_SHAPE_SHORTSWORD ? IP_CONST_FEAT_WEAPON_OF_CHOICE_SHORTSWORD : - nMbldType == MBLADE_SHAPE_LONGSWORD ? IP_CONST_FEAT_WEAPON_OF_CHOICE_LONGSWORD : - nMbldType == MBLADE_SHAPE_BASTARDSWORD ? IP_CONST_FEAT_WEAPON_OF_CHOICE_BASTARDSWORD : - -1 // This shouldn't ever be reached - ), oMbld); - // Bladewind: Due to some moron @ BioWare, calls to DoWhirlwindAttack() do not do anything if one - // does not have the feat. Therefore, we need to grant it as a bonus feat on the blade. - if(GetHasFeat(FEAT_BLADEWIND, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(IP_CONST_FEAT_WHIRLWIND), oMbld); - - - /* Apply the enhancements */ - int nFlags = GetPersistantLocalInt(oPC, MBLADE_FLAGS); - int bLight = FALSE; - - if(nFlags & MBLADE_FLAG_LUCKY) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyCastSpell(IP_CONST_CASTSPELL_MINDBLADE_LUCKY, IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY), oMbld); - } - if(nFlags & MBLADE_FLAG_DEFENDING) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyACBonus(2+nEnh), oMbld); //adicionado o bonus de enhancement para o ac - } - if(nFlags & MBLADE_FLAG_KEEN) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyKeen(), oMbld); - } - /*if(nFlags & MBLADE_FLAG_VICIOUS) - { OnHit - }*/ - if(nFlags & MBLADE_FLAG_PSYCHOKINETIC && !(nFlags & MBLADE_FLAG_PSYCHOKINETICBURST)) // Only Psychokinetic - { - if(nSKLevel <= 10) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d4), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 11 && nSKLevel <= 20) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d6), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 21 && nSKLevel <= 30) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d8), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 31 && nSKLevel <= 40) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d10), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 41) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d12), oMbld); - bLight = TRUE; - } - - } - if(nFlags & MBLADE_FLAG_MIGHTYCLEAVING) - { - if(GetHasFeat(FEAT_CLEAVE, oPC)) - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(IP_CONST_FEAT_GREAT_CLEAVE), oMbld); - else - AddItemProperty(DURATION_TYPE_PERMANENT, PRCItemPropertyBonusFeat(IP_CONST_FEAT_CLEAVE), oMbld); - } - if(nFlags & MBLADE_FLAG_COLLISION) - { - if(nSKLevel <= 10) - { - if(LOCAL_DEBUG) DoDebug("Added Collision damage", oPC); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING, IP_CONST_DAMAGEBONUS_5), oMbld); - } - if(nSKLevel >= 11 && nSKLevel <= 20) - { - if(LOCAL_DEBUG) DoDebug("Added Collision damage", oPC); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING, IP_CONST_DAMAGEBONUS_6), oMbld); - } - if(nSKLevel >= 21 && nSKLevel <= 30) - { - if(LOCAL_DEBUG) DoDebug("Added Collision damage", oPC); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING, IP_CONST_DAMAGEBONUS_7), oMbld); - } - if(nSKLevel >= 31 && nSKLevel <= 40) - { - if(LOCAL_DEBUG) DoDebug("Added Collision damage", oPC); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING, IP_CONST_DAMAGEBONUS_8), oMbld); - } - if(nSKLevel >= 41 && nSKLevel <= 50) - { - if(LOCAL_DEBUG) DoDebug("Added Collision damage", oPC); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING, IP_CONST_DAMAGEBONUS_9), oMbld); - } - if(nSKLevel >= 51 ) - { - if(LOCAL_DEBUG) DoDebug("Added Collision damage", oPC); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING, IP_CONST_DAMAGEBONUS_10), oMbld); - } - } - /*if(nFlags & MBLADE_FLAG_MINDCRUSHER ) - { OnHit - }*/ - if(nFlags & MBLADE_FLAG_PSYCHOKINETICBURST && !(nFlags & MBLADE_FLAG_PSYCHOKINETIC)) // Only Psychokinetic Burst - { - if(nSKLevel <= 10) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d4), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_1d6), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 11 && nSKLevel <= 20) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d6), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_1d8), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 21 && nSKLevel <= 30) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d8), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_1d10), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 31 && nSKLevel <= 40) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d10), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_1d12), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 41) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_1d12), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_2d8), oMbld); - bLight = TRUE; - } - } - /*if(nFlags & MBLADE_FLAG_SUPPRESSION) - { OnHit - }*/ - /*if(nFlags & MBLADE_FLAG_WOUNDING) - { OnHit - }*/ - /*if(nFlags & MBLADE_FLAG_DISRUPTING) - { OnHit - } - if(nFlags & MBLADE_FLAG_SOULBREAKER) - { - }*/ - if((nFlags & MBLADE_FLAG_PSYCHOKINETICBURST) && (nFlags & MBLADE_FLAG_PSYCHOKINETIC)) // Both Psychokinetic and Psychokinetic Burst - { - if(nSKLevel <= 10) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_2d4), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_1d6), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 11 && nSKLevel <=20) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_2d6), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_1d8), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 21 && nSKLevel <=30) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_2d8), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_1d10), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 31 && nSKLevel <=40) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_2d10), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_1d12), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 41 && nSKLevel <=50) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_2d12), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_2d8), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 51 && nSKLevel <=60) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_2d12), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_2d10), oMbld); - bLight = TRUE; - } - if(nSKLevel >= 61) - { - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL, IP_CONST_DAMAGEBONUS_2d12), oMbld); - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_2d12), oMbld); - bLight = TRUE; - } - - } - - if(bLight) - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyLight(IP_CONST_LIGHTBRIGHTNESS_NORMAL, IP_CONST_LIGHTCOLOR_WHITE), oMbld); -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/ws_inc_shifter.nss b/_haks/poa_exp_ability/ws_inc_shifter.nss deleted file mode 100644 index 65ad7e5a..00000000 --- a/_haks/poa_exp_ability/ws_inc_shifter.nss +++ /dev/null @@ -1,546 +0,0 @@ -//::////////////////////////////// -//:: Created By: Iznoghoud -//:: Last modified: January 19 2004 -/* -What this script changes: -- Melee Weapon properties now carry over to the unarmed forms' claws and bite -attacks. -1) Now, items with an AC bonus (or penalty) carry over to the shifted form as -the correct type. This means if you wear an amulet of natural armor +4, and a -cloak of protection +5, and you shift to a form that gets all item properties -carried over, you will have the +4 natural armor bonus from the ammy, as well as -the +5 deflection bonus from the cloak. No longer will the highest one override -all the other AC bonuses even if they are a different type. -2) Other "stackable" item properties, like ability bonuses, skill bonuses and -saving throw bonuses, now correctly add up in shifted form. This means if you -have a ring that gives +2 strength, and a ring with +3 strength, and you shift -into a drow warrior, you get +5 strength in shifted form, where you used to get -only +3. (the highest) - - -This file contains the code that handles stacking item properties for the improved -Shifter and Druid wildshape scripts. -1 February 2004: -Added an option to allow or disallow AC stacking of different types. -*/ -//::////////////////////////////// - -//******** Begin Options ********* - -//***************** GENERAL OPTIONS ********************* - -// Set this to TRUE to allow differing types of AC bonuses on items to stack. -// (ie armor, deflection, natural) Warning: This can give shifters who multiclass -// with monk a godly AC depending on your module. -// With FALSE, AC will transfer as it did with the default Bioware shifter script. -const int GW_ALLOW_AC_STACKING = TRUE; - -//***************** FOR SHIFTER SHAPES ****************** - -// Set this to TRUE to merge properties of boots/rings/ammy/cloak/bracers regardless -// of what polymorph.2da indicates. -// FALSE uses the polymorph.2da to decide whether to copy -const int GW_ALWAYS_COPY_ITEM_PROPS = TRUE;//FALSE; - -// Set this to TRUE to merge armor/helmet properties regardless of what polymorph.2da indicates. -// FALSE uses the polymorph.2da to decide whether to copy -const int GW_ALWAYS_COPY_ARMOR_PROPS = TRUE; - -// - Set this to 1 to copy over weapon properties to claw/bite attacks. -// - Set this to 2 to copy over glove properties to claw/bite attacks. -// - Set this to 3 to copy over from either weapon or gloves depending on whether a -// weapon was worn at the time of shifting. -// - Set this to any other value ( eg 0 ) to not copy over anything to claw/bite attacks. -const int GW_COPY_WEAPON_PROPS_TO_UNARMED = 3; - - -//***************** FOR DRUID SHAPES ******************** -// These options do nothing if you have not imported the improved Druid wild- -// and elemental shape scripts - -// Set this to TRUE to merge properties of boots/rings/ammy/cloak/bracers regardless -// of what polymorph.2da indicates. -// FALSE uses the polymorph.2da to decide whether to copy -const int WS_ALWAYS_COPY_ITEM_PROPS = TRUE;//FALSE; - -// Set this to TRUE to merge armor/helmet properties regardless of what polymorph.2da indicates. -// FALSE uses the polymorph.2da to decide whether to copy -const int WS_ALWAYS_COPY_ARMOR_PROPS = TRUE; - -// - Set this to 1 to copy over weapon properties to claw/bite attacks. -// - Set this to 2 to copy over glove properties to claw/bite attacks. -// - Set this to 3 to copy over from either weapon or gloves depending on whether a -// weapon was worn at the time of shifting. -// - Set this to any other value ( eg 0 ) to not copy over anything to claw/bite attacks. -const int WS_COPY_WEAPON_PROPS_TO_UNARMED = 3; - -//******** End Options *********** - -// Includes for various shifter and item related functions -#include "prc_x2_itemprop" -#include "x2_inc_shifter" -#include "prc_inc_combat" - -// **** Begin Function prototypes **** -// Copies oOld's Properties to oNew, but only properties that do not stack -// with properties of the same type. If oOld is a weapon, then bWeapon must be TRUE. -void WildshapeCopyNonStackProperties(object oOld, object oNew, int bWeapon = FALSE); -// Returns TRUE if ip is an item property that will stack with other properties -// of the same type: Ability, AC, Saves, Skills. -int GetIsStackingProperty(itemproperty ip); -// Returns the AC bonus type of oItem: AC_*_BONUS -int GetItemACType(object oItem); -// Looks for Stackable Properties on oItem, and sets local variables to count the total bonus. -// Also links any found AC bonuses/penalties to ePoly. -effect ExamineStackableProperties (object oPC, effect ePoly, object oItem ); -// if bItems is TRUE, Adds the stackable properties on all the objects given to ePoly. -// if bArmor is TRUE, Adds the stackable properties on armor and helmet to ePoly. -effect AddStackablePropertiesToPoly ( object oPC, effect ePoly, int bWeapon, int bItems, int bArmor, object oArmorOld, object oRing1Old, - object oRing2Old, object oAmuletOld, object oCloakOld, object oBracerOld, - object oBootsOld, object oBeltOld, object oHelmetOld, object oShield, object oWeapon, object oHideOld); -// Returns the spell that applied a Polymorph Effect currently on the player. -// -1 if it was no spell, -2 if no polymorph effect found. -int ScanForPolymorphEffect(object oPC); - -// Converts a number from iprp_damagetype.2da to the corresponding -// DAMAGE_TYPE_* constants. -int ConvertNumToDamTypeConstant ( int iItemDamType ); - -// Converts a number from iprp_immuncost.2da to the corresponding percentage of immunity -int ConvertNumToImmunePercentage ( int iImmuneCost ); - -// Special function to copy over weapon properties, which deals with copying -// over ranged weapons correctly. -void WildshapeCopyWeaponProperties(object oPC, object oOld, object oNew); - -// Returns TRUE if oItem is a creature claw or bite. -int WS_GetIsCreatureWeapon( object oItem ); - -// **** End Function prototypes **** - -// **** Begin Functions, added by Iznoghoud **** -// Copies oOld's Properties to oNew, but only properties that do not stack -// with properties of the same type. If oOld is a weapon, then bWeapon must be TRUE. -void WildshapeCopyNonStackProperties(object oOld, object oNew, int bWeapon = FALSE) { - - if (GetIsObjectValid(oOld) && GetIsObjectValid(oNew)) - { - itemproperty ip = GetFirstItemProperty(oOld); - while (GetIsItemPropertyValid(ip)) // Loop through all the item properties. - { - if (bWeapon) // If a weapon, then we must make sure not to transfer between ranged and non-ranged weapons! - { - if (GetWeaponRanged(oOld) == GetWeaponRanged(oNew) ) - { - AddItemProperty(DURATION_TYPE_PERMANENT,ip,oNew); - } - } - else - { - // If not a stacking property, copy over the property. - // Dont copy on hit cast spell property unless the target is a claw/bite. - if ( !GetIsStackingProperty(ip) && ( !(GetItemPropertyType(ip) == ITEM_PROPERTY_ONHITCASTSPELL) || GetIsCreatureWeapon(oNew) ) ) - AddItemProperty(DURATION_TYPE_PERMANENT,ip,oNew); - } - ip = GetNextItemProperty(oOld); // Get next property - } - } -} -// Returns TRUE if ip is an item property that will stack with other properties -// of the same type: Ability, AC, Saves, Skills. -int GetIsStackingProperty(itemproperty ip) { - int iType = GetItemPropertyType(ip); - if ( iType == 0 || ( GW_ALLOW_AC_STACKING && (iType == 1) ) || // Bonus to Ability, AC - iType == 27 || ( GW_ALLOW_AC_STACKING && (iType == 28) ) || // Penalty to Ability, AC - iType == 40 || iType == 41 || // Bonus to saves (against element/universal, or fort/reflex/will) - iType == 49 || iType == 50 || // Penalty to saves (against element/universal, or fort/reflex/will) - iType == 52 || iType == 29 || // Skill Bonus, Penalty - iType == 51 || // Regeneration - iType == 20 || iType == 24 // Damage Immunity and Vulnerability - ) - return TRUE; - else - return FALSE; -} -// Returns the AC bonus type of oItem: AC_*_BONUS -int GetItemACType(object oItem) { - switch(GetBaseItemType(oItem)) { - case BASE_ITEM_ARMOR: // These item types always get an armor ac bonus - case BASE_ITEM_BRACER: - return AC_ARMOUR_ENCHANTMENT_BONUS; - break; - case BASE_ITEM_BELT: // These item types always get a deflection ac bonus. - case BASE_ITEM_CLOAK: - case BASE_ITEM_GLOVES: // Note that gloves and bracers equip in the same inventory slot, - case BASE_ITEM_HELMET: // but do not give the same AC bonus type!!! - case BASE_ITEM_RING: - case BASE_ITEM_TORCH: - return AC_DEFLECTION_BONUS; - break; - case BASE_ITEM_BOOTS: // Only boots give a dodge ac bonus - return AC_DODGE_BONUS; - break; - case BASE_ITEM_AMULET: // Only amulets give a natural AC bonus - return AC_NATURAL_BONUS; - break; - case BASE_ITEM_LARGESHIELD: // Shields give a shield AC bonus - case BASE_ITEM_SMALLSHIELD: - case BASE_ITEM_TOWERSHIELD: - return AC_SHIELD_ENCHANTMENT_BONUS; - break; - default: // It was a weapon, or a non default item, safest to default to deflection - return AC_DEFLECTION_BONUS; - break; - }; - return AC_DEFLECTION_BONUS; // This one would seem unneccesary but it won't compile otherwise. -} -// Looks for Stackable Properties on oItem, and sets local variables to count the total bonus. -// Also links any found AC bonuses/penalties to ePoly. -effect ExamineStackableProperties ( object oPC, effect ePoly, object oItem ) -{ - if ( !GetIsObjectValid(oItem) ) // If not valid, dont do any unneccesary work. - return ePoly; - itemproperty ip = GetFirstItemProperty(oItem); - int iSubType; - effect eTemp; - while ( GetIsItemPropertyValid(ip) ) // Loop through all the item properties - { - if ( GetIsStackingProperty(ip) ) // See if it's a stacking property - { - iSubType = GetItemPropertySubType(ip); // Get the item property subtype for later use. - // This contains whether a bonus is str, dex, - // concentration skill, universal saving throws, etc. - switch ( GetItemPropertyType(ip) ) // Which type of property is it? - { - // In the case of AC modifiers, add it directly to the Polymorphing effect. - // For the other cases, set local variables on the player to - // make a sum of all the bonuses/penalties. We use local - // variables here because there are no arrays in NWScript, and - // declaring a variable for every skill, ability type and saving - // throw type in here is a little overboard. - case 0: // Ability Bonus - SetLocalInt(oPC, "ws_ability_" + IntToString(iSubType), GetLocalInt(oPC, "ws_ability_" + IntToString(iSubType)) + GetItemPropertyCostTableValue(ip) ); - break; - case 1: // AC Bonus - ePoly = EffectLinkEffects(EffectACIncrease(GetItemPropertyCostTableValue(ip),GetItemACType(oItem)), ePoly); - break; - case 27: // Ability Penalty - SetLocalInt(oPC, "ws_ability_" + IntToString(iSubType), GetLocalInt(oPC, "ws_ability_" + IntToString(iSubType)) - GetItemPropertyCostTableValue(ip) ); - break; - case 28: // AC penalty - ePoly = EffectLinkEffects(EffectACDecrease(GetItemPropertyCostTableValue(ip)), ePoly); - break; - case 52: // Skill Bonus - SetLocalInt(oPC, "ws_skill_" + IntToString(iSubType), GetLocalInt(oPC, "ws_skill_" + IntToString(iSubType)) + GetItemPropertyCostTableValue(ip) ); - break; - case 29: // Skill Penalty - SetLocalInt(oPC, "ws_skill_" + IntToString(iSubType), GetLocalInt(oPC, "ws_skill_" + IntToString(iSubType)) - GetItemPropertyCostTableValue(ip) ); - break; - case 40: // Saving Throw Bonus vs Element(or universal) - SetLocalInt(oPC, "ws_save_elem_" + IntToString(iSubType), GetLocalInt(oPC, "ws_save_elem_" + IntToString(iSubType)) + GetItemPropertyCostTableValue(ip) ); - break; - case 41: // Saving Throw Bonus specific (fort/reflex/will) - SetLocalInt(oPC, "ws_save_spec_" + IntToString(iSubType), GetLocalInt(oPC, "ws_save_spec_" + IntToString(iSubType)) + GetItemPropertyCostTableValue(ip) ); - break; - case 49: // Saving Throw Penalty vs Element(or universal) - SetLocalInt(oPC, "ws_save_elem_" + IntToString(iSubType), GetLocalInt(oPC, "ws_save_elem_" + IntToString(iSubType)) - GetItemPropertyCostTableValue(ip) ); - break; - case 50: // Saving Throw Penalty specific (fort/reflex/will) - SetLocalInt(oPC, "ws_save_spec_" + IntToString(iSubType), GetLocalInt(oPC, "ws_save_spec_" + IntToString(iSubType)) - GetItemPropertyCostTableValue(ip) ); - break; - case 51: // Regeneration - SetLocalInt(oPC, "ws_regen", GetLocalInt(OBJECT_SELF, "ws_regen") + GetItemPropertyCostTableValue(ip) ); - break; - case 20: // Damage Immunity - SetLocalInt(oPC, "ws_dam_immun_" + IntToString(iSubType), GetLocalInt(oPC, "ws_dam_immun_" + IntToString(iSubType)) + ConvertNumToImmunePercentage(GetItemPropertyCostTableValue(ip)) ); - break; - case 24: // Damage Vulnerability - SetLocalInt(oPC, "ws_dam_immun_" + IntToString(iSubType), GetLocalInt(oPC, "ws_dam_immun_" + IntToString(iSubType)) - ConvertNumToImmunePercentage(GetItemPropertyCostTableValue(ip)) ); - break; - }; - } - ip = GetNextItemProperty(oItem); - } - return ePoly; -} -// if bItems is TRUE, Adds all the stackable properties on all the objects given to ePoly. -// if bItems is FALSE, Adds only the stackable properties on armor and helmet to ePoly. -effect AddStackablePropertiesToPoly ( object oPC, effect ePoly, int bWeapon, int bItems, int bArmor, object oArmorOld, object oRing1Old, - object oRing2Old, object oAmuletOld, object oCloakOld, object oBracerOld, - object oBootsOld, object oBeltOld, object oHelmetOld, object oShield, object oWeapon, object oHideOld) -{ - if (bArmor ) // Armor properties get carried over - { - ePoly = ExamineStackableProperties ( oPC, ePoly, oArmorOld ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oHelmetOld ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oShield ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oHideOld ); - } - if ( bItems ) // Item properties get carried over - { - ePoly = ExamineStackableProperties ( oPC, ePoly, oRing1Old ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oRing2Old ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oAmuletOld ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oCloakOld ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oBootsOld ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oBeltOld ); - ePoly = ExamineStackableProperties ( oPC, ePoly, oBracerOld ); - } - // AC bonuses are attached to ePoly inside ExamineStackableProperties - int i; // This will loop over all the different ability subtypes (eg str, dex, con, etc) - int j; // This will contain the sum of the stackable bonus type we're looking at - for ( i = 0; i <= 5; i++ ) // **** Handle Ability Bonuses **** - { - j = GetLocalInt(oPC, "ws_ability_" + IntToString(i)); - // Add the sum of this ability bonus to the polymorph effect. - if ( j > 0 ) // Sum was Positive - ePoly = EffectLinkEffects(EffectAbilityIncrease(i, j), ePoly); - else if ( j < 0 ) // Sum was Negative - ePoly = EffectLinkEffects(EffectAbilityDecrease(i, -j), ePoly); - DeleteLocalInt(oPC, "ws_ability_" + IntToString(i)); - } - for ( i = 0; i <= 26; i++ ) // **** Handle Skill Bonuses **** - { - j = GetLocalInt(oPC, "ws_skill_" + IntToString(i)); - // Add the sum of this skill bonus to the polymorph effect. - if ( j > 0 ) // Sum was Positive - ePoly = EffectLinkEffects(EffectSkillIncrease(i, j), ePoly); - else if ( j < 0 ) // Sum was Negative - ePoly = EffectLinkEffects(EffectSkillDecrease(i, -j), ePoly); - DeleteLocalInt(oPC, "ws_skill_" + IntToString(i)); - } - for ( i = 0; i <= 21; i++ ) // **** Handle Saving Throw vs element Bonuses **** - { - j = GetLocalInt(oPC, "ws_save_elem_" + IntToString(i)); - // Add the sum of this saving throw bonus to the polymorph effect. - if ( j > 0 ) // Sum was Positive - ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, j, i), ePoly); - else if ( j < 0 ) // Sum was Negative - ePoly = EffectLinkEffects(EffectSavingThrowDecrease(SAVING_THROW_ALL, -j, i), ePoly); - DeleteLocalInt(oPC, "ws_save_elem_" + IntToString(i)); - } - for ( i = 0; i <= 3; i++ ) // **** Handle Saving Throw specific Bonuses **** - { - j = GetLocalInt(oPC, "ws_save_spec_" + IntToString(i)); - // Add the sum of this saving throw bonus to the polymorph effect. - if ( j > 0 ) // Sum was Positive - ePoly = EffectLinkEffects(EffectSavingThrowIncrease(i, j), ePoly); - else if ( j < 0 ) // Sum was Negative - ePoly = EffectLinkEffects(EffectSavingThrowDecrease(i, -j), ePoly); - DeleteLocalInt(oPC, "ws_save_spec_" + IntToString(i)); - } - j = GetLocalInt(oPC, "ws_regen"); - if ( j > 0 ) - { - ePoly = EffectLinkEffects(EffectRegenerate(j, 6.0), ePoly); - DeleteLocalInt(oPC, "ws_regen" ); - } - for ( i = 0; i <= 13; i++ ) // **** Handle Damage Immunity and Vulnerability **** - { - j = GetLocalInt(oPC, "ws_dam_immun_" + IntToString(i)); - // Add the sum of this Damage Immunity/Vulnerability to the polymorph effect. - if ( j > 0 ) // Sum was Positive - ePoly = EffectLinkEffects(EffectDamageImmunityIncrease(ConvertNumToDamTypeConstant ( i ), j), ePoly); - else if ( j < 0 ) // Sum was Negative - ePoly = EffectLinkEffects(EffectDamageImmunityDecrease(ConvertNumToDamTypeConstant ( i ), -j), ePoly); - DeleteLocalInt(oPC, "ws_dam_immun_" + IntToString(i)); - } - - return ePoly; // Finally, we have the entire (possibly huge :P ) effect to be applied to the shifter. -} - -// Returns the spell that applied a Polymorph Effect currently on the player. -// -1 if it was no spell, -2 if no polymorph effect found. -int ScanForPolymorphEffect(object oPC) -{ - effect eEffect = GetFirstEffect(oPC); - while ( GetIsEffectValid(eEffect) ) - { - if ( GetEffectType( eEffect ) == EFFECT_TYPE_POLYMORPH ) - { - return GetEffectSpellId(eEffect); - } - eEffect = GetNextEffect(oPC); - } - return -2; -} - -// Converts a number from iprp_damagetype.2da to the corresponding -// DAMAGE_TYPE_* constants. -int ConvertNumToDamTypeConstant ( int iItemDamType ) -{ - switch ( iItemDamType ) - { - case 0: - return DAMAGE_TYPE_BLUDGEONING; - break; - case 1: - return DAMAGE_TYPE_PIERCING; - break; - case 2: - return DAMAGE_TYPE_SLASHING; - break; - case 5: - return DAMAGE_TYPE_MAGICAL; - break; - case 6: - return DAMAGE_TYPE_ACID; - break; - case 7: - return DAMAGE_TYPE_COLD; - break; - case 8: - return DAMAGE_TYPE_DIVINE; - break; - case 9: - return DAMAGE_TYPE_ELECTRICAL; - break; - case 10: - return DAMAGE_TYPE_FIRE; - break; - case 11: - return DAMAGE_TYPE_NEGATIVE; - break; - case 12: - return DAMAGE_TYPE_POSITIVE; - break; - case 13: - return DAMAGE_TYPE_SONIC; - break; - default: - return DAMAGE_TYPE_POSITIVE; - break; - }; - // This one might seem unneccesary but it wont compile otherwise - return DAMAGE_TYPE_POSITIVE; -} - -// Converts a number from iprp_immuncost.2da to the corresponding percentage of immunity -int ConvertNumToImmunePercentage ( int iImmuneCost ) -{ - switch ( iImmuneCost ) - { - case 1: - return 5; - break; - case 2: - return 10; - break; - case 3: - return 25; - break; - case 4: - return 50; - break; - case 5: - return 75; - break; - case 6: - return 90; - break; - case 7: - return 100; - break; - default: - return 0; - break; - }; - return 0; -} - -void WildshapeCopyWeaponProperties(object oPC, object oOld, object oNew) -{ - if (GetIsObjectValid(oOld) && GetIsObjectValid(oNew)) - { - itemproperty ip = GetFirstItemProperty(oOld); - // If both are Melee Weapons - if ( !GetWeaponRanged(oOld) && !GetWeaponRanged(oNew) ) - { - while (GetIsItemPropertyValid(ip)) - { - AddItemProperty(DURATION_TYPE_PERMANENT,ip,oNew); - ip = GetNextItemProperty(oOld); - }// while - } - - // If both are Ranged Weapons - else if ( GetWeaponRanged(oOld) && GetWeaponRanged(oNew) ) - { - int bUnlimitedAmmoFound = FALSE; - itemproperty ipNew; - int iOldMightyValue = 0; - object oAmmo; - while (GetIsItemPropertyValid(ip)) - { - if ( GetItemPropertyType(ip) == 61 ) // 61 = Unlimited Ammo - { - // For some reason, when removing/replacing an unlimited - // ammo property, the corresponding missile type will get - // dropped in the player's inventory, so we have to remove - // that missile again to prevent abuse. - bUnlimitedAmmoFound = TRUE; - oAmmo = GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC); - if ( !GetIsObjectValid( oAmmo ) ) - oAmmo = GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC); - if ( !GetIsObjectValid( oAmmo ) ) - oAmmo = GetItemInSlot(INVENTORY_SLOT_BULLETS, oPC); - IPRemoveMatchingItemProperties(oNew, ITEM_PROPERTY_UNLIMITED_AMMUNITION, DURATION_TYPE_PERMANENT ); - AddItemProperty(DURATION_TYPE_PERMANENT,ip,oNew); - DestroyObject(oAmmo); - } - else if ( GetItemPropertyType(ip) == 45 ) // 45 = Mighty - { - ipNew = GetFirstItemProperty(oNew); - // Find the mighty value of the Polymorph's weapon - while ( GetIsItemPropertyValid(ipNew) ) - { - if ( GetItemPropertyType( ipNew ) == 45 ) - { - iOldMightyValue = GetItemPropertyCostTableValue( ipNew ); - break; - } - ipNew = GetNextItemProperty(oNew); - } // while - // If new mighty value bigger, remove old one and add new one. - if ( GetItemPropertyCostTableValue(ip) > iOldMightyValue ) - { - RemoveItemProperty(oNew, ipNew); - AddItemProperty(DURATION_TYPE_PERMANENT,ip,oNew); - } - } - else - AddItemProperty(DURATION_TYPE_PERMANENT,ip,oNew); - - ip = GetNextItemProperty(oOld); - } // while - // Add basic unlimited ammo if neccesary - if ( bUnlimitedAmmoFound == FALSE && !GetItemHasItemProperty(oNew, ITEM_PROPERTY_UNLIMITED_AMMUNITION ) ) - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyUnlimitedAmmo(), oNew); - } - } - else if ( GetWeaponRanged(oNew) ) - { - // Add basic unlimited ammo if neccesary - if ( !GetItemHasItemProperty(oNew, ITEM_PROPERTY_UNLIMITED_AMMUNITION ) ) - AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyUnlimitedAmmo(), oNew); - } -} - -// Returns TRUE if oItem is a creature claw or bite. -int WS_GetIsCreatureWeapon( object oItem ) -{ - int iBaseItemType = GetBaseItemType(oItem); - switch ( iBaseItemType ) - { - case BASE_ITEM_CBLUDGWEAPON: - case BASE_ITEM_CPIERCWEAPON: - case BASE_ITEM_CSLASHWEAPON: - case BASE_ITEM_CSLSHPRCWEAP: - return TRUE; - default: - return FALSE; - }; - return FALSE; -} - -// **** End Functions, added by Iznoghoud **** diff --git a/_haks/poa_exp_ability/x0_s2_daze.ncs b/_haks/poa_exp_ability/x0_s2_daze.ncs deleted file mode 100644 index 5856a658..00000000 Binary files a/_haks/poa_exp_ability/x0_s2_daze.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x0_s2_daze.nss b/_haks/poa_exp_ability/x0_s2_daze.nss deleted file mode 100644 index a72b8e64..00000000 --- a/_haks/poa_exp_ability/x0_s2_daze.nss +++ /dev/null @@ -1,55 +0,0 @@ -//:://///////////////////////////////////////////// -//:: [Shadow Daze] -//:: [x0_S2_Daze.nss] -//:: Copyright (c) 2000 Bioware Corp. -//::////////////////////////////////////////////// -//:: Shadow dancer. -//:: Will save or be dazed for 5 rounds. -//:: Can only daze humanoid-type creatures -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: September 23, 2002 -//::////////////////////////////////////////////// -//:: Update Pass By: -//:: March 2003: Removed humanoid and level checks to -//:: make this a more powerful daze -#include "X0_I0_SPELLS" -void main() -{ - //Declare major variables - object oTarget = GetSpellTargetObject(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); - effect eDaze = EffectDazed(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - - effect eLink = EffectLinkEffects(eMind, eDaze); - eLink = EffectLinkEffects(eLink, eDur); - - effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); - int nMetaMagic = GetMetaMagicFeat(); - int nDuration = 5; - int nRacial = GetRacialType(oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 475)); - //check meta magic for extend - if (nMetaMagic == METAMAGIC_EXTEND) - { - nDuration = 4; - } - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - //Make SR check - if (!MyResistSpell(OBJECT_SELF, oTarget)) - { - //Make Will Save to negate effect - if (!/*Will Save*/ MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC()+10, SAVING_THROW_TYPE_MIND_SPELLS)) - { - //Apply VFX Impact and daze effect - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } -} - - diff --git a/_haks/poa_exp_ability/x0_s2_shadsum.ncs b/_haks/poa_exp_ability/x0_s2_shadsum.ncs deleted file mode 100644 index 9aaebf5f..00000000 Binary files a/_haks/poa_exp_ability/x0_s2_shadsum.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x0_s2_shadsum.nss b/_haks/poa_exp_ability/x0_s2_shadsum.nss deleted file mode 100644 index b38a93bb..00000000 --- a/_haks/poa_exp_ability/x0_s2_shadsum.nss +++ /dev/null @@ -1,55 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Summon Shadow -//:: X0_S2_ShadSum.nss -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* - PRESTIGE CLASS VERSION - Spell powerful ally from the shadow plane to - battle for the wizard -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Oct 26, 2001 -//::////////////////////////////////////////////// - -void main() -{ - //Declare major variables - int nMetaMagic = GetMetaMagicFeat(); - int nCasterLevel = GetLevelByClass(27); - int nDuration = nCasterLevel; - effect eSummon; - - - - //Set the summoned undead to the appropriate template based on the caster level - if (nCasterLevel <= 5) - { - eSummon = EffectSummonCreature("shadow01",VFX_FNF_SUMMON_UNDEAD); - } - else if (nCasterLevel <= 8) - { - eSummon = EffectSummonCreature("shadhound01",VFX_FNF_SUMMON_UNDEAD); - } - else if (nCasterLevel <=10) - { - eSummon = EffectSummonCreature("shadlord01",VFX_FNF_SUMMON_UNDEAD); - } - else - { - if (GetHasFeat(1002,OBJECT_SELF))// has epic shadowlord feat - { - //GZ 2003-07-24: Epic shadow lord - eSummon = EffectSummonCreature("shadlord02",VFX_FNF_SUMMON_UNDEAD); - } - else - { - eSummon = EffectSummonCreature("shadlord01",VFX_FNF_SUMMON_UNDEAD); - } - - } - - //Apply VFX impact and summon effect - ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration)); -} diff --git a/_haks/poa_exp_ability/x0_s3_summonelem.ncs b/_haks/poa_exp_ability/x0_s3_summonelem.ncs deleted file mode 100644 index 783c2a45..00000000 Binary files a/_haks/poa_exp_ability/x0_s3_summonelem.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x0_s3_summonelem.nss b/_haks/poa_exp_ability/x0_s3_summonelem.nss deleted file mode 100644 index ca755efb..00000000 --- a/_haks/poa_exp_ability/x0_s3_summonelem.nss +++ /dev/null @@ -1,44 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Summon Huge Elemental -//:: x0_s3_summonelem -//:: Copyright (c) 2002 Floodgate Entertainment -//::////////////////////////////////////////////// -/* - This spell is used for the various elemental-summoning - items. - It does not consider metamagic as it is only used for - item properties. -*/ -//::////////////////////////////////////////////// -//:: Created By: Nathaniel Blumberg -//:: Created On: 12/13/02 -//::////////////////////////////////////////////// -//:: Latest Update: Andrew Nobbs April 9, 2003 - -void main() -{ - // Level 1: Air elemental - // Level 2: Water elemental - // Level 3: Earth elemental - // Level 4: Fire elemental - - //Declare major variables - object oCaster = OBJECT_SELF; - string sResRef; - int nLevel = GetCasterLevel(oCaster) - 4; - float fDuration = 606.0; // Ten turns + one round - - // Figure out which creature to summon - switch (nLevel) - { - case 1: sResRef = "airelder7"; break; - case 2: sResRef = "watereleder7"; break; - case 3: sResRef = "earthelder7"; break; - case 4: sResRef = "fireelder1"; break; - } - - // 0.5 sec delay between VFX and creature creation - effect eSummon = EffectSummonCreature(sResRef, VFX_FNF_SUMMON_MONSTER_3, 0.5); - - ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), fDuration); -} diff --git a/_haks/poa_exp_ability/x1_s2_deatharrow.ncs b/_haks/poa_exp_ability/x1_s2_deatharrow.ncs deleted file mode 100644 index 6f202905..00000000 Binary files a/_haks/poa_exp_ability/x1_s2_deatharrow.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x1_s2_deatharrow.nss b/_haks/poa_exp_ability/x1_s2_deatharrow.nss deleted file mode 100644 index ea0a0ad1..00000000 --- a/_haks/poa_exp_ability/x1_s2_deatharrow.nss +++ /dev/null @@ -1,56 +0,0 @@ -//:://///////////////////////////////////////////// -//:: x1_s2_deatharrow -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Seeker Arrow - - creates an arrow that automatically hits target. - - At level 4 the arrow does +2 magic damage - - at level 5 the arrow does +3 magic damage - - - normal arrow damage, based on base item type - - - Must have shortbow or longbow in hand. -*/ -//::////////////////////////////////////////////// -//:: Created By: -//:: Created On: -//::////////////////////////////////////////////// -#include "X0_I0_SPELLS" -#include "x2_inc_itemprop" - -void main() -{ - int nBonus = nBonus = ArcaneArcherCalculateBonus(); - - object oTarget = GetSpellTargetObject(); - - if (GetIsObjectValid(oTarget) == TRUE) - { - // * Roll Touch Attack - int nTouch = TouchAttackRanged(oTarget, TRUE); - if (nTouch > 0) - { - int nDamage = ArcaneArcherDamageDoneByBow((nTouch ==2)); - if (nDamage > 0) - { - effect ePhysical = EffectDamage(nDamage +10, DAMAGE_TYPE_PIERCING,IPGetDamagePowerConstantFromNumber(nBonus)); - effect eMagic = EffectDamage(nBonus +10, DAMAGE_TYPE_MAGICAL); - ApplyEffectToObject(DURATION_TYPE_INSTANT, ePhysical, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eMagic, oTarget); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); - - // * if target fails a save DC30 they die - if (MySavingThrow(SAVING_THROW_FORT, oTarget, 30) == 0) - { - effect eSlay = EffectDeath(); - eSlay = SupernaturalEffect(eSlay); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eSlay, oTarget); - } - } - } - } -} - diff --git a/_haks/poa_exp_ability/x1_s2_hailarrow.ncs b/_haks/poa_exp_ability/x1_s2_hailarrow.ncs deleted file mode 100644 index 7d416706..00000000 Binary files a/_haks/poa_exp_ability/x1_s2_hailarrow.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x1_s2_hailarrow.nss b/_haks/poa_exp_ability/x1_s2_hailarrow.nss deleted file mode 100644 index ed2a3ef7..00000000 --- a/_haks/poa_exp_ability/x1_s2_hailarrow.nss +++ /dev/null @@ -1,65 +0,0 @@ -//:://///////////////////////////////////////////// -//:: x1_s2_hailarrow -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - One arrow per arcane archer level at all targets - - GZ SEPTEMBER 2003 - Added damage penetration - -*/ -//::////////////////////////////////////////////// -//:: Created By: -//:: Created On: -//::////////////////////////////////////////////// -#include "x0_i0_spells" - -// GZ: 2003-07-23 fixed criticals not being honored -void DoAttack(object oTarget) -{ - int nBonus = ArcaneArcherCalculateBonus(); - int nDamage; - // * Roll Touch Attack - int nTouch = TouchAttackRanged(oTarget, TRUE); - if (nTouch > 0) - { - nDamage = ArcaneArcherDamageDoneByBow(nTouch ==2); - if (nDamage > 0) - { - // * GZ: Added correct damage power - effect ePhysical = EffectDamage(nDamage +10, DAMAGE_TYPE_PIERCING, IPGetDamagePowerConstantFromNumber(nBonus)); - effect eMagic = EffectDamage(nBonus +10, DAMAGE_TYPE_MAGICAL); - ApplyEffectToObject(DURATION_TYPE_INSTANT, ePhysical, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eMagic, oTarget); - } - } -} - -void main() -{ - - object oTarget; - - int nLevel = GetLevelByClass(CLASS_TYPE_ARCANE_ARCHER, OBJECT_SELF); - int i = 0; - float fDist = 0.0; - float fDelay = 0.0; - - for (i = 1; i <= nLevel; i++) - { - oTarget = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, i); - if (GetIsObjectValid(oTarget) == TRUE) - { - fDist = GetDistanceBetween(OBJECT_SELF, oTarget); - fDelay = fDist/(3.0 * log(fDist) + 2.0); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 603)); - effect eArrow = EffectVisualEffect(357); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eArrow, oTarget); - DelayCommand(fDelay, DoAttack(oTarget)); - } - } - -} diff --git a/_haks/poa_exp_ability/x2_s1_dragneg.ncs b/_haks/poa_exp_ability/x2_s1_dragneg.ncs deleted file mode 100644 index 05676b4f..00000000 Binary files a/_haks/poa_exp_ability/x2_s1_dragneg.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x2_s1_dragneg.nss b/_haks/poa_exp_ability/x2_s1_dragneg.nss deleted file mode 100644 index a1b34e9a..00000000 --- a/_haks/poa_exp_ability/x2_s1_dragneg.nss +++ /dev/null @@ -1,299 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dragon Breath Negative Energy -//:: NW_S1_DragNeg -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Calculates the proper damage and DC Save for the - breath weapon based on the HD of the dragon. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 9, 2001 -//::////////////////////////////////////////////// - -const string DRAGBREATHLOCK = "DragonBreathLock"; - - -//modified to use the breath include - Fox -#include "prc_inc_spells" -#include "prc_inc_breath" - -void main() -{ - // Check the dragon breath delay lock - if(GetLocalInt(OBJECT_SELF, DRAGBREATHLOCK)) - { - SendMessageToPC(OBJECT_SELF, "You cannot use your breath weapon again so soon"); - return; - } - - //Declare major variables - int nAge = GetHitDice(OBJECT_SELF); - int nDCBoost = nAge / 2; - int nDamageDice; - int nLevelDrain; //drain was commented out, kept just in case - struct breath NegBreath; - - //Determine save DC and ability damage - if (nAge <= 6) //Wyrmling - { - nLevelDrain = 1; - nDamageDice = 2; - } - else if (nAge >= 7 && nAge <= 9) //Very Young - { - nLevelDrain = 1; - nDamageDice = 4; - } - else if (nAge >= 10 && nAge <= 12) //Young - { - nLevelDrain = 1; - nDamageDice = 6; - } - else if (nAge >= 13 && nAge <= 15) //Juvenile - { - nLevelDrain = 2; - nDamageDice = 8; - } - else if (nAge >= 16 && nAge <= 18) //Young Adult - { - nLevelDrain = 2; - nDamageDice = 10; - } - else if (nAge >= 19 && nAge <= 21) //Adult - { - nLevelDrain = 3; - nDamageDice = 12; - } - else if (nAge >= 22 && nAge <= 24) //Mature Adult - { - nLevelDrain = 4; - nDamageDice = 14; - } - else if (nAge >= 25 && nAge <= 27) //Old - { - nLevelDrain = 5; - nDamageDice = 16; - } - else if (nAge >= 28 && nAge <= 30) //Very Old - { - nLevelDrain = 5; - nDamageDice = 18; - } - else if (nAge >= 31 && nAge <= 33) //Ancient - { - nLevelDrain = 6; - nDamageDice = 20; - } - else if (nAge >= 34 && nAge <= 37) //Wyrm - { - nLevelDrain = 7; - nDamageDice = 22; - } -else if (nAge >= 38 && nAge <= 41) //Great Wyrm - { - nDamageDice = 24; - nLevelDrain = 8; - } - else if (nAge >= 42 && nAge <= 45) //Great Wyrm - { - nDamageDice = 26; - nLevelDrain = 9; - } - else if (nAge >= 46 && nAge <= 49) //Great Wyrm - { - nDamageDice = 28; - nLevelDrain = 10; - } - - else if (nAge >= 50 && nAge <= 53) //Great Wyrm - { - nDamageDice = 30; - nLevelDrain = 11; - } - else if (nAge >= 54 && nAge <= 57) //Great Wyrm - { - nDamageDice = 32; - nLevelDrain = 12; - } - else if (nAge >= 58 && nAge <= 61) //Great Wyrm - { - nDamageDice = 34; - nLevelDrain = 13; - } - else if (nAge >= 62 && nAge <= 65) //Great Wyrm - { - nDamageDice = 36; - nLevelDrain = 14; - } - else if (nAge >= 66 && nAge <= 69) //Great Wyrm - { - nDamageDice = 38; - nLevelDrain = 15; - } - else if (nAge >= 70 && nAge <= 73) //Great Wyrm - { - nDamageDice = 40; - nLevelDrain = 16; - } - else if (nAge >= 74 && nAge <= 77) //Great Wyrm - { - nDamageDice = 42; - nLevelDrain = 17; - } - else if (nAge >= 78 && nAge <= 81) //Great Wyrm - { - nDamageDice = 44; - nLevelDrain = 18; - } - else if (nAge >= 82 && nAge <= 85) //Great Wyrm - { - nDamageDice = 46; - nLevelDrain = 19; - } - - else if (nAge >= 86 && nAge <= 89) //Great Wyrm - { - nDamageDice = 48; - nLevelDrain = 20; - } - - else if (nAge >= 90 && nAge <= 93) //Great Wyrm - { - nDamageDice = 50; - nLevelDrain = 21; - } - - else if (nAge >= 94 && nAge <= 97) //Great Wyrm - { - nDamageDice = 52; - nLevelDrain = 22; - } - - else if (nAge >= 98 && nAge <= 101) //Great Wyrm - { - nDamageDice = 54; - nLevelDrain = 23; - } - else if (nAge >= 102 && nAge <= 105) //Great Wyrm - { - nDamageDice = 56; - nLevelDrain = 24; - } - else if (nAge >= 106 && nAge <= 109) //Great Wyrm - { - nDamageDice = 58; - nLevelDrain = 25; - } - else if (nAge >= 110 && nAge <= 113) //Great Wyrm - { - nDamageDice = 60; - nLevelDrain = 26; - } - else if (nAge >= 114 && nAge <= 117) //Great Wyrm - { - nDamageDice = 62; - nLevelDrain = 27; - } - else if (nAge >= 118 && nAge <= 121) //Great Wyrm - { - nDamageDice = 64; - nLevelDrain = 28; - } - else if (nAge >= 122 && nAge <= 125) //Great Wyrm - { - nDamageDice = 66; - nLevelDrain = 29; - } - else if (nAge >= 126 && nAge <= 129) //Great Wyrm - { - nDamageDice = 68; - nLevelDrain = 30; - } - else if (nAge >= 130 && nAge <= 133) //Great Wyrm - { - nDamageDice = 70; - nLevelDrain = 31; - } - else if (nAge >= 134 && nAge <= 137) //Great Wyrm - { - nDamageDice = 72; - nLevelDrain = 32; - } - else if (nAge >= 138 && nAge <= 141) //Great Wyrm - { - nDamageDice = 74; - nLevelDrain = 33; - } - else if (nAge >= 142 && nAge <= 145) //Great Wyrm - { - nDamageDice = 76; - nLevelDrain = 34; - } - else if (nAge >= 146 && nAge <= 149) //Great Wyrm - { - nDamageDice = 78; - nLevelDrain = 35; - } - else if (nAge >= 150 && nAge <= 153) //Great Wyrm - { - nDamageDice = 80; - nLevelDrain = 36; - } - else if (nAge >= 154 && nAge <= 157) //Great Wyrm - { - nDamageDice = 82; - nLevelDrain = 37; - } - - else if (nAge >= 158 && nAge <= 161) //Great Wyrm - { - nDamageDice = 84; - nLevelDrain = 38; - } - else if (nAge >= 162 && nAge <= 165) //Great Wyrm - { - nDamageDice = 86; - nLevelDrain = 39; - } - else if (nAge >= 166 && nAge <= 169) //Great Wyrm - { - nDamageDice = 88; - nLevelDrain = 40; - } - - else if (nAge >= 170 && nAge <= 173) //Great Wyrm - { - nDamageDice = 90; - nLevelDrain = 41; - } - else if (nAge >= 174 && nAge <= 177) //Great Wyrm - { - nDamageDice = 92; - nLevelDrain = 42; - } - else if (nAge > 178 ) //Great Wyrm - { - nDamageDice = 94; - nLevelDrain = 43; - } - - //create the breath - 40' ~ 14m? - should set it based on size later - NegBreath = CreateBreath(OBJECT_SELF, FALSE, 40.0, DAMAGE_TYPE_NEGATIVE, 8, nDamageDice, ABILITY_CONSTITUTION, nDCBoost); - - //Apply the breath - note: Level drain was included but commented out in the original, thus not currently implemented in the include. - //Information on the level drain amount is kept just in case. - PRCPlayDragonBattleCry(); - ApplyBreath(NegBreath, PRCGetSpellTargetLocation()); - - //Apply the recharge lock - SetLocalInt(OBJECT_SELF, DRAGBREATHLOCK, TRUE); - - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(NegBreath.nRoundsUntilRecharge); - SendMessageToPC(OBJECT_SELF, "Your breath weapon will be ready again in " + IntToString(NegBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, DeleteLocalInt(OBJECT_SELF, DRAGBREATHLOCK)); - DelayCommand(fDelay, SendMessageToPC(OBJECT_SELF, "Your breath weapon is ready now")); -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/x2_s2_cursesong.ncs b/_haks/poa_exp_ability/x2_s2_cursesong.ncs deleted file mode 100644 index 06a6cd39..00000000 Binary files a/_haks/poa_exp_ability/x2_s2_cursesong.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x2_s2_cursesong.nss b/_haks/poa_exp_ability/x2_s2_cursesong.nss deleted file mode 100644 index c3c17b2b..00000000 --- a/_haks/poa_exp_ability/x2_s2_cursesong.nss +++ /dev/null @@ -1,2095 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Curse Song -//:: X2_S2_CurseSong -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - This spells applies penalties to all of the - bard's enemies within 30ft for a set duration of - 10 rounds. -*/ -//::////////////////////////////////////////////// -//:: Created By: Andrew Nobbs -//:: Created On: May 16, 2003 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs May 20, 2003 - -#include "prc_inc_clsfunc" - -void main() -{ - - if (!GetHasFeat(FEAT_BARD_SONGS, OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(85587,OBJECT_SELF); // no more bardsong uses left - return; - } - - if (PRCGetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF)) - { - FloatingTextStrRefOnCreature(85764,OBJECT_SELF); // not useable when silenced - return; - } - - //RemoveOldSongEffects(OBJECT_SELF,GetSpellId()); - - //Declare major variables - int nLevel = GetLevelByClass(CLASS_TYPE_BARD) + - GetLevelByClass(CLASS_TYPE_MINSTREL_EDGE)/2 + - GetLevelByClass(CLASS_TYPE_DIRGESINGER) + - - GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST) + - GetLevelByClass(CLASS_TYPE_HEARTWARDER) + - GetLevelByClass(CLASS_TYPE_SPELLDANCER) + - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD) + - GetLevelByClass(CLASS_TYPE_BLADESINGER) + - GetLevelByClass(CLASS_TYPE_VIRTUOSO); - - int nRanks = GetSkillRank(SKILL_PERFORM); - if (GetHasFeat(FEAT_DRAGONSONG, OBJECT_SELF)) nRanks+= 2; - int nPerform = nRanks; - int nDuration = 10; //+ nChr; - - effect eAttack; - effect eDamage; - effect eWill; - effect eFort; - effect eReflex; - effect eHP; - effect eAC; - effect eSkill; - - int nAttack; - int nDamage; - int nWill; - int nFort; - int nReflex; - int nHP; - int nAC; - int nSkill; - //Check to see if the caster has Lasting Impression and increase duration. - if(GetHasFeat(870)) - { - nDuration *= 10; - } - - if(GetHasFeat(424)) // lingering song - { - nDuration += 5; - } - - - - if(nPerform >= 125 && nLevel >= 180) - { - nAttack = 36; - nDamage = 36; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 348; - nAC = 36; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 179) - { - nAttack = 36; - nDamage = 36; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 346; - nAC = 35; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 178) - { - nAttack = 35; - nDamage = 36; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 344; - nAC = 35; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 177) - { - nAttack = 35; - nDamage = 35; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 342; - nAC = 35; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 176) - { - nAttack = 35; - nDamage = 35; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 340; - nAC = 34; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 175) - { - nAttack = 34; - nDamage = 35; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 338; - nAC = 34; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 174) - { - nAttack = 34; - nDamage = 34; - nWill = 18; - nFort = 18; - nReflex = 18; - nHP = 336; - nAC = 34; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 173) - { - nAttack = 34; - nDamage = 34; - nWill = 17; - nFort = 18; - nReflex = 18; - nHP = 334; - nAC = 34; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 172) - { - nAttack = 34; - nDamage = 34; - nWill = 17; - nFort = 17; - nReflex = 18; - nHP = 332; - nAC = 34; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 171) - { - nAttack = 34; - nDamage = 34; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 330; - nAC = 34; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 170) - { - nAttack = 34; - nDamage = 34; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 328; - nAC = 33; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 169) - { - nAttack = 33; - nDamage = 34; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 326; - nAC = 33; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 168) - { - nAttack = 33; - nDamage = 33; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 324; - nAC = 33; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 167) - { - nAttack = 33; - nDamage = 33; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 322; - nAC = 32; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 166) - { - nAttack = 32; - nDamage = 33; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 320; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 165) - { - nAttack = 32; - nDamage = 32; - nWill = 17; - nFort = 17; - nReflex = 17; - nHP = 318; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 164) - { - nAttack = 32; - nDamage = 32; - nWill = 16; - nFort = 17; - nReflex = 17; - nHP = 316; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 163) - { - nAttack = 32; - nDamage = 32; - nWill = 16; - nFort = 16; - nReflex = 17; - nHP = 314; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 162) - { - nAttack = 32; - nDamage = 32; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 312; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 161) - { - nAttack = 31; - nDamage = 32; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 310; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 160) - { - nAttack = 31; - nDamage = 31; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 308; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 159) - { - nAttack = 30; - nDamage = 31; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 306; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 158) - { - nAttack = 30; - nDamage = 30; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 304; - nAC = 32; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 157) - { - nAttack = 30; - nDamage = 30; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 302; - nAC = 31; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 156) - { - nAttack = 29; - nDamage = 30; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 300; - nAC = 31; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 155) - { - nAttack = 29; - nDamage = 29; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 298; - nAC = 31; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 154) - { - nAttack = 29; - nDamage = 29; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 296; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 153) - { - nAttack = 29; - nDamage = 28; - nWill = 16; - nFort = 16; - nReflex = 16; - nHP = 294; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 152) - { - nAttack = 29; - nDamage = 28; - nWill = 15; - nFort = 16; - nReflex = 16; - nHP = 292; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 151) - { - nAttack = 29; - nDamage = 28; - nWill = 15; - nFort = 15; - nReflex = 16; - nHP = 290; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 150) - { - nAttack = 29; - nDamage = 28; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 288; - nAC = 30; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 149) - { - nAttack = 29; - nDamage = 28; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 286; - nAC = 29; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 148) - { - nAttack = 28; - nDamage = 28; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 284; - nAC = 29; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 147) - { - nAttack = 28; - nDamage = 27; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 282; - nAC = 29; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 146) - { - nAttack = 28; - nDamage = 27; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 280; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 145) - { - nAttack = 27; - nDamage = 27; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 278; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 144) - { - nAttack = 27; - nDamage = 26; - nWill = 15; - nFort = 15; - nReflex = 15; - nHP = 276; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 143) - { - nAttack = 27; - nDamage = 26; - nWill = 14; - nFort = 15; - nReflex = 15; - nHP = 274; - nAC = 28; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 142) - { - nAttack = 27; - nDamage = 26; - nWill = 14; - nFort = 14; - nReflex = 15; - nHP = 272; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 141) - { - nAttack = 27; - nDamage = 26; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 270; - nAC = 28; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 140) - { - nAttack = 27; - nDamage = 26; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 268; - nAC = 27; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 139) - { - nAttack = 27; - nDamage = 25; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 266; - nAC = 27; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 138) - { - nAttack = 27; - nDamage = 25; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 264; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 137) - { - nAttack = 26; - nDamage = 25; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 262; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 136) - { - nAttack = 26; - nDamage = 24; - nWill = 14; - nFort = 14; - nReflex = 14; - nHP = 260; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 135) - { - nAttack = 26; - nDamage = 24; - nWill = 13; - nFort = 14; - nReflex = 14; - nHP = 258; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 134) - { - nAttack = 26; - nDamage = 24; - nWill = 13; - nFort = 13; - nReflex = 14; - nHP = 256; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 133) - { - nAttack = 26; - nDamage = 24; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 254; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 132) - { - nAttack = 26; - nDamage = 23; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 252; - nAC = 26; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 131) - { - nAttack = 26; - nDamage = 23; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 250; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 130) - { - nAttack = 25; - nDamage = 23; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 248; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 129) - { - nAttack = 25; - nDamage = 22; - nWill = 13; - nFort = 13; - nReflex = 13; - nHP = 246; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 128) - { - nAttack = 25; - nDamage = 22; - nWill = 12; - nFort = 13; - nReflex = 13; - nHP = 244; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 127) - { - nAttack = 25; - nDamage = 22; - nWill = 12; - nFort = 12; - nReflex = 13; - nHP = 242; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 126) - { - nAttack = 25; - nDamage = 22; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 240; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 125) - { - nAttack = 25; - nDamage = 21; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 238; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 124) - { - nAttack = 24; - nDamage = 21; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 236; - nAC = 25; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 123) - { - nAttack = 24; - nDamage = 21; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 234; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 122) - { - nAttack = 24; - nDamage = 20; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 232; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 121) - { - nAttack = 23; - nDamage = 20; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 230; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 120) - { - nAttack = 23; - nDamage = 19; - nWill = 12; - nFort = 12; - nReflex = 12; - nHP = 228; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 119) - { - nAttack = 23; - nDamage = 19; - nWill = 11; - nFort = 12; - nReflex = 12; - nHP = 226; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 118) - { - nAttack = 23; - nDamage = 19; - nWill = 11; - nFort = 11; - nReflex = 12; - nHP = 224; - nAC = 24; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 117) - { - nAttack = 23; - nDamage = 19; - nWill = 11; - nFort = 11; - nReflex = 11; - nHP = 222; - nAC = 24; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 116) - { - nAttack = 23; - nDamage = 19; - nWill = 11; - nFort = 11; - nReflex = 11; - nHP = 220; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 115) - { - nAttack = 22; - nDamage = 19; - nWill = 11; - nFort = 11; - nReflex = 11; - nHP = 218; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 114) - { - nAttack = 22; - nDamage = 18; - nWill = 11; - nFort = 11; - nReflex = 11; - nHP = 216; - nAC = 23; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 113) - { - nAttack = 22; - nDamage = 18; - nWill = 10; - nFort = 11; - nReflex = 11; - nHP = 214; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 112) - { - nAttack = 22; - nDamage = 18; - nWill = 10; - nFort = 10; - nReflex = 11; - nHP = 212; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 111) - { - nAttack = 22; - nDamage = 18; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 210; - nAC = 23; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 110) - { - nAttack = 22; - nDamage = 18; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 208; - nAC = 22; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 109) - { - nAttack = 22; - nDamage = 17; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 206; - nAC = 22; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 108) - { - nAttack = 21; - nDamage = 17; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 204; - nAC = 22; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 107) - { - nAttack = 21; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 202; - nAC = 22; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 106) - { - nAttack = 21; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 200; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 105) - { - nAttack = 21; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 198; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 104) - { - nAttack = 20; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 196; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 103) - { - nAttack = 20; - nDamage = 16; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 194; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 102) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 192; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 101) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 190; - nAC = 21; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 100) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 188; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 99) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 186; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 98) - { - nAttack = 20; - nDamage = 15; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 184; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 97) - { - nAttack = 20; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 182; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 96) - { - nAttack = 19; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 180; - nAC = 20; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 95) - { - nAttack = 19; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 178; - nAC = 19; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 94) - { - nAttack = 19; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 176; - nAC = 19; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 93) - { - nAttack = 18; - nDamage = 14; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 174; - nAC = 19; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 92) - { - nAttack = 18; - nDamage = 13; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 172; - nAC = 19; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 91) - { - nAttack = 18; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 170; - nAC = 19; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 90) - { - nAttack = 18; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 168; - nAC = 18; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 89) - { - nAttack = 18; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 166; - nAC = 18; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 88) - { - nAttack = 17; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 164; - nAC = 18; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 87) - { - nAttack = 17; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 162; - nAC = 18; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 86) - { - nAttack = 17; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 160; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 85) - { - nAttack = 17; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 158; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 84) - { - nAttack = 16; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 156; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 83) - { - nAttack = 15; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 154; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 82) - { - nAttack = 14; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 152; - nAC = 17; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 81) - { - nAttack = 14; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 150; - nAC = 16; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 80) - { - nAttack = 13; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 148; - nAC = 16; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 79) - { - nAttack = 12; - nDamage = 12; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 146; - nAC = 16; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 78) - { - nAttack = 12; - nDamage = 11; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 144; - nAC = 16; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 77) - { - nAttack = 11; - nDamage = 11; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 142; - nAC = 16; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 76) - { - nAttack = 11; - nDamage = 11; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 140; - nAC = 15; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 75) - { - nAttack = 11; - nDamage = 10; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 138; - nAC = 15; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 74) - { - nAttack = 10; - nDamage = 10; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 136; - nAC = 15; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 73) - { - nAttack = 10; - nDamage = 10; - nWill = 10; - nFort = 10; - nReflex = 10; - nHP = 134; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 72) - { - nAttack = 10; - nDamage = 10; - nWill = 9; - nFort = 10; - nReflex = 10; - nHP = 132; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 71) - { - nAttack = 10; - nDamage = 10; - nWill = 9; - nFort = 9; - nReflex = 10; - nHP = 130; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 70) - { - nAttack = 10; - nDamage = 10; - nWill = 9; - nFort = 9; - nReflex = 9; - nHP = 128; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 69) - { - nAttack = 10; - nDamage = 9; - nWill = 9; - nFort = 9; - nReflex = 9; - nHP = 126; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 68) - { - nAttack = 9; - nDamage = 9; - nWill = 9; - nFort = 9; - nReflex = 9; - nHP = 124; - nAC = 14; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 67) - { - nAttack = 9; - nDamage = 9; - nWill = 9; - nFort = 9; - nReflex = 9; - nHP = 122; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 66) - { - nAttack = 9; - nDamage = 9; - nWill = 8; - nFort = 9; - nReflex = 9; - nHP = 120; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 65) - { - nAttack = 9; - nDamage = 9; - nWill = 8; - nFort = 8; - nReflex = 9; - nHP = 118; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 64) - { - nAttack = 9; - nDamage = 9; - nWill = 8; - nFort = 8; - nReflex = 8; - nHP = 116; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 63) - { - nAttack = 9; - nDamage = 8; - nWill = 8; - nFort = 8; - nReflex = 8; - nHP = 114; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 62) - { - nAttack = 8; - nDamage = 8; - nWill = 8; - nFort = 8; - nReflex = 8; - nHP = 112; - nAC = 13; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 61) - { - nAttack = 8; - nDamage = 8; - nWill = 8; - nFort = 8; - nReflex = 8; - nHP = 110; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 60) - { - nAttack = 8; - nDamage = 8; - nWill = 7; - nFort = 8; - nReflex = 8; - nHP = 108; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 59) - { - nAttack = 8; - nDamage = 8; - nWill = 7; - nFort = 7; - nReflex = 8; - nHP = 106; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 58) - { - nAttack = 8; - nDamage = 8; - nWill = 7; - nFort = 7; - nReflex = 7; - nHP = 104; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 57) - { - nAttack = 8; - nDamage = 7; - nWill = 7; - nFort = 7; - nReflex = 7; - nHP = 102; - nAC = 12; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 56) - { - nAttack = 7; - nDamage = 7; - nWill = 7; - nFort = 7; - nReflex = 7; - nHP = 100; - nAC = 12; - nSkill = 20; - } - - if(nPerform >= 125 && nLevel >= 55) - { - nAttack = 7; - nDamage = 7; - nWill = 7; - nFort = 7; - nReflex = 7; - nHP = 98; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 54) - { - nAttack = 7; - nDamage = 7; - nWill = 6; - nFort = 7; - nReflex = 7; - nHP = 96; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 53) - { - nAttack = 7; - nDamage = 7; - nWill = 6; - nFort = 6; - nReflex = 7; - nHP = 94; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 52) - { - nAttack = 7; - nDamage = 7; - nWill = 6; - nFort = 6; - nReflex = 6; - nHP = 92; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 51) - { - nAttack = 6; - nDamage = 7; - nWill = 6; - nFort = 6; - nReflex = 6; - nHP = 90; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 50) - { - nAttack = 6; - nDamage = 6; - nWill = 6; - nFort = 6; - nReflex = 6; - nHP = 88; - nAC = 11; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 49) - { - nAttack = 6; - nDamage = 6; - nWill = 6; - nFort = 6; - nReflex = 6; - nHP = 86; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 48) - { - nAttack = 6; - nDamage = 6; - nWill = 5; - nFort = 6; - nReflex = 6; - nHP = 84; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 47) - { - nAttack = 6; - nDamage = 6; - nWill = 5; - nFort = 5; - nReflex = 6; - nHP = 82; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 46) - { - nAttack = 6; - nDamage = 6; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 80; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 45) - { - nAttack = 6; - nDamage = 5; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 78; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 44) - { - nAttack = 5; - nDamage = 5; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 76; - nAC = 10; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 43) - { - nAttack = 5; - nDamage = 5; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 74; - nAC = 9; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 42) - { - nAttack = 4; - nDamage = 5; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 72; - nAC = 9; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 41) - { - nAttack = 4; - nDamage = 4; - nWill = 5; - nFort = 5; - nReflex = 5; - nHP = 70; - nAC = 9; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 40) - { - nAttack = 4; - nDamage = 4; - nWill = 4; - nFort = 5; - nReflex = 5; - nHP = 68; - nAC = 9; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 39) - { - nAttack = 4; - nDamage = 4; - nWill = 4; - nFort = 4; - nReflex = 5; - nHP = 66; - nAC = 8; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 38) - { - nAttack = 4; - nDamage = 4; - nWill = 4; - nFort = 4; - nReflex = 4; - nHP = 64; - nAC = 8; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 37) - { - nAttack = 3; - nDamage = 4; - nWill = 4; - nFort = 4; - nReflex = 4; - nHP = 62; - nAC = 8; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 36) - { - nAttack = 3; - nDamage = 4; - nWill = 4; - nFort = 3; - nReflex = 4; - nHP = 60; - nAC = 8; - nSkill = 20; - } - if(nPerform >= 125 && nLevel >= 35) - { - nAttack = 3; - nDamage = 4; - nWill = 4; - nFort = 3; - nReflex = 3; - nHP = 58; - nAC = 7; - nSkill = 20; - } - if(nPerform >= 120 && nLevel >= 34) - { - nAttack = 3; - nDamage = 4; - nWill = 3; - nFort = 3; - nReflex = 3; - nHP = 56; - nAC = 7; - nSkill = 20; - } - if(nPerform >= 115 && nLevel >= 33) - { - nAttack = 3; - nDamage = 3; - nWill = 3; - nFort = 3; - nReflex = 3; - nHP = 54; - nAC = 7; - nSkill = 20; - } - if(nPerform >= 110 && nLevel >= 32) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 3; - nReflex = 3; - nHP = 52; - nAC = 7; - nSkill = 20; - } - if(nPerform >= 105 && nLevel >= 31) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 3; - nHP = 50; - nAC = 7; - nSkill = 20; - } - - if(nPerform >= 100 && nLevel >= 30) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 48; - nAC = 7; - nSkill = 18; - } - else if(nPerform >= 95 && nLevel >= 29) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 46; - nAC = 6; - nSkill = 17; - } - else if(nPerform >= 90 && nLevel >= 28) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 44; - nAC = 6; - nSkill = 16; - } - else if(nPerform >= 85 && nLevel >= 27) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 42; - nAC = 6; - nSkill = 15; - } - else if(nPerform >= 80 && nLevel >= 26) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 40; - nAC = 6; - nSkill = 14; - } - else if(nPerform >= 75 && nLevel >= 25) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 38; - nAC = 6; - nSkill = 13; - } - else if(nPerform >= 70 && nLevel >= 24) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 36; - nAC = 5; - nSkill = 12; - } - else if(nPerform >= 65 && nLevel >= 23) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 34; - nAC = 5; - nSkill = 11; - } - else if(nPerform >= 60 && nLevel >= 22) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 32; - nAC = 5; - nSkill = 10; - } - else if(nPerform >= 55 && nLevel >= 21) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 30; - nAC = 5; - nSkill = 9; - } - else if(nPerform >= 50 && nLevel >= 20) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 28; - nAC = 5; - nSkill = 8; - } - else if(nPerform >= 45 && nLevel >= 19) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 26; - nAC = 5; - nSkill = 7; - } - else if(nPerform >= 40 && nLevel >= 18) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 24; - nAC = 5; - nSkill = 6; - } - else if(nPerform >= 35 && nLevel >= 17) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 22; - nAC = 5; - nSkill = 5; - } - else if(nPerform >= 30 && nLevel >= 16) - { - nAttack = 2; - nDamage = 3; - nWill = 3; - nFort = 2; - nReflex = 2; - nHP = 20; - nAC = 5; - nSkill = 4; - } - else if(nPerform >= 24 && nLevel >= 15) - { - nAttack = 2; - nDamage = 3; - nWill = 2; - nFort = 2; - nReflex = 2; - nHP = 16; - nAC = 4; - nSkill = 3; - } - else if(nPerform >= 21 && nLevel >= 14) - { - nAttack = 2; - nDamage = 3; - nWill = 1; - nFort = 1; - nReflex = 1; - nHP = 16; - nAC = 3; - nSkill = 2; - } - else if(nPerform >= 18 && nLevel >= 11) - { - nAttack = 2; - nDamage = 2; - nWill = 1; - nFort = 1; - nReflex = 1; - nHP = 8; - nAC = 2; - nSkill = 2; - } - else if(nPerform >= 15 && nLevel >= 8) - { - nAttack = 2; - nDamage = 2; - nWill = 1; - nFort = 1; - nReflex = 1; - nHP = 8; - nAC = 0; - nSkill = 1; - } - else if(nPerform >= 12 && nLevel >= 6) - { - nAttack = 1; - nDamage = 2; - nWill = 1; - nFort = 1; - nReflex = 1; - nHP = 0; - nAC = 0; - nSkill = 1; - } - else if(nPerform >= 9 && nLevel >= 3) - { - nAttack = 1; - nDamage = 2; - nWill = 1; - nFort = 1; - nReflex = 0; - nHP = 0; - nAC = 0; - nSkill = 0; - } - else if(nPerform >= 6 && nLevel >= 2) - { - nAttack = 1; - nDamage = 1; - nWill = 1; - nFort = 0; - nReflex = 0; - nHP = 0; - nAC = 0; - nSkill = 0; - } - else if(nPerform >= 3 && nLevel >= 1) - { - nAttack = 1; - nDamage = 1; - nWill = 0; - nFort = 0; - nReflex = 0; - nHP = 0; - nAC = 0; - nSkill = 0; - } - effect eVis = EffectVisualEffect(VFX_IMP_DOOM); - - eAttack = EffectAttackDecrease(nAttack); - eDamage = EffectDamageDecrease(nDamage, DAMAGE_TYPE_BLUDGEONING|DAMAGE_TYPE_PIERCING|DAMAGE_TYPE_SLASHING); - effect eLink = EffectLinkEffects(eAttack, eDamage); - - if(nWill > 0) - { - eWill = EffectSavingThrowDecrease(SAVING_THROW_WILL, nWill); - eLink = EffectLinkEffects(eLink, eWill); - } - if(nFort > 0) - { - eFort = EffectSavingThrowDecrease(SAVING_THROW_FORT, nFort); - eLink = EffectLinkEffects(eLink, eFort); - } - if(nReflex > 0) - { - eReflex = EffectSavingThrowDecrease(SAVING_THROW_REFLEX, nReflex); - eLink = EffectLinkEffects(eLink, eReflex); - } - if(nAC > 0) - { - eAC = EffectACDecrease(nAC, AC_DODGE_BONUS); - eLink = EffectLinkEffects(eLink, eAC); - } - if(nSkill > 0) - { - eSkill = EffectSkillDecrease(SKILL_ALL_SKILLS, nSkill); - eLink = EffectLinkEffects(eLink, eSkill); - } - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eDur2 = EffectVisualEffect(507); - eLink = EffectLinkEffects(eLink, eDur); - - effect eImpact = EffectVisualEffect(VFX_IMP_HEAD_SONIC); - effect eFNF = EffectVisualEffect(VFX_FNF_LOS_EVIL_30); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, GetLocation(OBJECT_SELF)); - - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); - - eHP = ExtraordinaryEffect(eHP); - eLink = ExtraordinaryEffect(eLink); - - string sCurseSongHP = "CURSE_SONG_HP_" + ObjectToString(OBJECT_SELF); - - RemoveSongEffects(GetSpellId(),OBJECT_SELF,OBJECT_SELF); - - float fDelay; - while(GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) - { - // * GZ Oct 2003: If we are deaf, we do not have negative effects from curse song - if (!PRCGetHasEffect(EFFECT_TYPE_SILENCE,oTarget) && !PRCGetHasEffect(EFFECT_TYPE_DEAF,oTarget)) - { - RemoveSongEffects(GetSpellId(),OBJECT_SELF,oTarget); - int nRace = MyPRCGetRacialType(oTarget); - - // Undead and Constructs are immune to mind effecting abilities. - // A bard with requiem can effect undead - if ((nRace == RACIAL_TYPE_UNDEAD && GetHasFeat(FEAT_REQUIEM, OBJECT_SELF)) || nRace != RACIAL_TYPE_UNDEAD && nRace != RACIAL_TYPE_CONSTRUCT || GetIsWarforged(oTarget)) - { - // Even with requiem, they have half duration - if (nRace == RACIAL_TYPE_UNDEAD) nDuration /= 2; - - if (nHP > 0 && !GetLocalInt(oTarget, sCurseSongHP)) - { - eHP = PRCEffectDamage(oTarget, nHP, DAMAGE_TYPE_SONIC, DAMAGE_POWER_NORMAL); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SONIC), oTarget); - DelayCommand(0.01, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHP, oTarget)); - SetLocalInt(oTarget, sCurseSongHP, TRUE); - DelayCommand(RoundsToSeconds(nDuration),DeleteLocalInt(oTarget, sCurseSongHP)); - } - - if (!GetIsDead(oTarget)) - { - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - DelayCommand(PRCGetRandomDelay(0.1,0.5), ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - //StoreSongRecipient(oTarget, OBJECT_SELF, GetSpellId(), nDuration); - } - - } - } - else - { - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE), oTarget); - } - } - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); - } - DecrementRemainingFeatUses(OBJECT_SELF, FEAT_BARD_SONGS); -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/x2_s2_discbreath.ncs b/_haks/poa_exp_ability/x2_s2_discbreath.ncs deleted file mode 100644 index 364c973f..00000000 Binary files a/_haks/poa_exp_ability/x2_s2_discbreath.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x2_s2_discbreath.nss b/_haks/poa_exp_ability/x2_s2_discbreath.nss deleted file mode 100644 index eee28a3b..00000000 --- a/_haks/poa_exp_ability/x2_s2_discbreath.nss +++ /dev/null @@ -1,260 +0,0 @@ -/* -This is the edited script I had made changes to before Silver reverted to -the original. It has: - -Round delays for metabreath/multiple uses -Line breath (working) -Pyroclastic being 50% of each -PRCGetReflexAdjustedDamage to interact better with other systems -Range dependant on size -Less code duplication by using dedicated functions. Easier to fix/find bugs. -Moved breath VFX so when different ones for different colors are done they can be easily implemented - -Moved to a new script so its not lost permanently. Feel free to refer to this if you want. - -Primogenitor - -//:: edited by Fox on 1/19/08 - -Script has been rewritten to use the new breath include. Most of the above has -been subsumed into said include where appropriate. - -//:://///////////////////////////////////////////// -//:: Breath Weapon for Dragon Disciple Class -//:: x2_s2_discbreath -//:: Copyright (c) 2003Bioware Corp. -//::////////////////////////////////////////////// - -//::////////////////////////////////////////////// -//:: Created By: Georg Zoeller (modified by Silver) -//:: Created On: June, 17, 2003 (June, 7, 2005) -//::////////////////////////////////////////////// -*/ -#include "prc_inc_spells" -#include "prc_inc_breath" -#include "prc_inc_combat" - -////////////////////////// -// Constant Definitions // -////////////////////////// - - -int IsLineBreath() -{ - object oDD = OBJECT_SELF; - if(GetHasFeat(FEAT_BLACK_DRAGON, oDD) - || GetHasFeat(FEAT_BLUE_DRAGON, oDD) - || GetHasFeat(FEAT_BRASS_DRAGON, oDD) - || GetHasFeat(FEAT_BRONZE_DRAGON, oDD) - || GetHasFeat(FEAT_COPPER_DRAGON, oDD) - || GetHasFeat(FEAT_AMETHYST_DRAGON, oDD) - || GetHasFeat(FEAT_BROWN_DRAGON, oDD) - || GetHasFeat(FEAT_CHAOS_DRAGON, oDD) - || GetHasFeat(FEAT_OCEANUS_DRAGON, oDD) - || GetHasFeat(FEAT_RADIANT_DRAGON, oDD) - || GetHasFeat(FEAT_RUST_DRAGON, oDD) - || GetHasFeat(FEAT_STYX_DRAGON, oDD) - || GetHasFeat(FEAT_TARTIAN_DRAGON, oDD) - ) - return TRUE; - return FALSE; -} - -//Returns range in feet for breath struct. Conversion to meters is -//handled internally in the include -float GetRangeFromSize(int nSize) -{ - float fRange = 30.0; - switch(nSize) - { - case CREATURE_SIZE_FINE: - case CREATURE_SIZE_DIMINUTIVE: - case CREATURE_SIZE_TINY: fRange = 15.0; break; - case CREATURE_SIZE_SMALL: fRange = 20.0; break; - case CREATURE_SIZE_MEDIUM: fRange = 30.0; break; - case CREATURE_SIZE_LARGE: fRange = 40.0; break; - case CREATURE_SIZE_HUGE: fRange = 50.0; break; - case CREATURE_SIZE_GARGANTUAN: fRange = 60.0; break; - case CREATURE_SIZE_COLOSSAL: fRange = 70.0; break; - } - return fRange; -} - -void BreathRecharge(object oPC) -{ - IncrementRemainingFeatUses(oPC, FEAT_DRAGON_DIS_BREATH); - SendMessageToPC(oPC, "Your breath weapon is ready now"); -} - -void main() -{ - //Declare main variables. - object oPC = OBJECT_SELF; - int nLevel = GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE, oPC); - location lTarget = PRCGetSpellTargetLocation(); - struct breath DiscBreath; - int bLine = IsLineBreath(); - int nVis; - - //range calculation - float fRange = GetRangeFromSize(PRCGetCreatureSize(oPC)); - if(bLine) fRange *= 2.0; - - //Li Lung dragons have a 'roar' instead of breath weapon - /*if(GetHasFeat(FEAT_LI_LUNG_DRAGON, oPC)) - { - if(nUses < 3) - { - IncrementRemainingFeatUses(oPC, FEAT_DRAGON_DIS_BREATH); - nUses++; - lTarget = GetLocation(oPC); - fRange = FeetToMeters(fRange); - float fDuration = RoundsToSeconds(nLevel); - PlaySound("c_dragnold_atk1"); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY), lTarget); - - object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fRange, lTarget, FALSE, OBJECT_TYPE_CREATURE); - while(GetIsObjectValid(oTarget)) - { - float fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDeaf(), oTarget, fDuration)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SONIC), oTarget)); - - oTarget = GetNextObjectInShape(SHAPE_SPHERE, fRange, lTarget, FALSE, OBJECT_TYPE_CREATURE); - } - SetLocalInt(oPC, SPECIAL_BREATH_USES, nUses); - } - return; - } - else if(GetHasFeat(FEAT_FANG_DRAGON, oPC)) - { - - else if(nUses < 2) - { - IncrementRemainingFeatUses(oPC, FEAT_DRAGON_DIS_BREATH); - nUses++; - object oBite = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oPC); - int AttackRoll = GetAttackRoll(oTarget, oPC, oBite); - int nDamage = d4(1) * AttackRoll; - - if(nDamage) - { - ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDamage, DURATION_TYPE_PERMANENT, TRUE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE), oTarget); - } - SetLocalInt(oPC, SPECIAL_BREATH_USES, nUses); - } - return; - }*/ - - //Sets the save DC for Dragon Breath attacks. This is a reflex save to halve the damage. - //Save is 10+CON+1/2 DD level. Gains +1 at level 13, and every 3 levels after. - int nSaveDCBonus = ((nLevel)/2) + PRCMax((nLevel - 10) / 3, 0); - - //Sets damage levels for Dragon Breath attacks. 2d10 at level 3, - //4d10 at level 7, and then an additional 2d10 every 3 levels (10, 13, 16, ect) - int nDice; - - if (nLevel >= 3) nDice += 2; - if (nLevel >= 7) nDice += 2; - if (nLevel >= 10) nDice += 2; - if (nLevel >= 13) nDice += 2; - if (nLevel >= 16) nDice += 2; - if (nLevel >= 19) nDice += 2; - if (nLevel >= 22) nDice += 2; - if (nLevel >= 25) nDice += 2; - if (nLevel >= 28) nDice += 2; - if (nLevel >= 31) nDice += 2; -if (nLevel >= 34) nDice += 2; -if (nLevel >= 37) nDice += 2; -if (nLevel >= 40) nDice += 2; -if (nLevel >= 43) nDice += 2; -if (nLevel >= 46) nDice += 2; -if (nLevel >= 49) nDice += 2; -if (nLevel >= 52) nDice += 2; -if (nLevel >= 55) nDice += 2; -if (nLevel >= 58) nDice += 2; -if (nLevel >= 60) nDice += 2; - //Only Dragons with Breath Weapons will have damage caused by their breath attack. - //Any Dragon type not listed here will have a breath attack, but it will not - //cause damage or create a visual effect. - int DBREED = GetHasFeat(FEAT_RED_DRAGON, oPC) ? DAMAGE_TYPE_FIRE : - GetHasFeat(FEAT_BRASS_DRAGON, oPC) ? DAMAGE_TYPE_FIRE : - GetHasFeat(FEAT_GOLD_DRAGON, oPC) ? DAMAGE_TYPE_FIRE : - GetHasFeat(FEAT_LUNG_WANG_DRAGON, oPC) ? DAMAGE_TYPE_FIRE : - GetHasFeat(FEAT_TIEN_LUNG_DRAGON, oPC) ? DAMAGE_TYPE_FIRE : - GetHasFeat(FEAT_PYROCLASTIC_DRAGON, oPC) ? DAMAGE_TYPE_FIRE : - GetHasFeat(FEAT_BLACK_DRAGON, oPC) ? DAMAGE_TYPE_ACID : - GetHasFeat(FEAT_GREEN_DRAGON, oPC) ? DAMAGE_TYPE_ACID : - GetHasFeat(FEAT_COPPER_DRAGON, oPC) ? DAMAGE_TYPE_ACID : - GetHasFeat(FEAT_BROWN_DRAGON, oPC) ? DAMAGE_TYPE_ACID : - GetHasFeat(FEAT_DEEP_DRAGON, oPC) ? DAMAGE_TYPE_ACID : - GetHasFeat(FEAT_RUST_DRAGON, oPC) ? DAMAGE_TYPE_ACID : - GetHasFeat(FEAT_STYX_DRAGON, oPC) ? DAMAGE_TYPE_ACID : - GetHasFeat(FEAT_SILVER_DRAGON, oPC) ? DAMAGE_TYPE_COLD : - GetHasFeat(FEAT_WHITE_DRAGON, oPC) ? DAMAGE_TYPE_COLD : - GetHasFeat(FEAT_BLUE_DRAGON, oPC) ? DAMAGE_TYPE_ELECTRICAL : - GetHasFeat(FEAT_BRONZE_DRAGON, oPC) ? DAMAGE_TYPE_ELECTRICAL : - GetHasFeat(FEAT_OCEANUS_DRAGON, oPC) ? DAMAGE_TYPE_ELECTRICAL : - GetHasFeat(FEAT_SONG_DRAGON, oPC) ? DAMAGE_TYPE_ELECTRICAL : - GetHasFeat(FEAT_EMERALD_DRAGON, oPC) ? DAMAGE_TYPE_SONIC : - GetHasFeat(FEAT_SAPPHIRE_DRAGON, oPC) ? DAMAGE_TYPE_SONIC : - GetHasFeat(FEAT_BATTLE_DRAGON, oPC) ? DAMAGE_TYPE_SONIC : - GetHasFeat(FEAT_HOWLING_DRAGON, oPC) ? DAMAGE_TYPE_SONIC : - GetHasFeat(FEAT_CRYSTAL_DRAGON, oPC) ? DAMAGE_TYPE_POSITIVE : - GetHasFeat(FEAT_AMETHYST_DRAGON, oPC) ? DAMAGE_TYPE_MAGICAL : - GetHasFeat(FEAT_TOPAZ_DRAGON, oPC) ? DAMAGE_TYPE_MAGICAL : - GetHasFeat(FEAT_ETHEREAL_DRAGON, oPC) ? DAMAGE_TYPE_MAGICAL : - GetHasFeat(FEAT_RADIANT_DRAGON, oPC) ? DAMAGE_TYPE_MAGICAL : - GetHasFeat(FEAT_TARTIAN_DRAGON, oPC) ? DAMAGE_TYPE_MAGICAL : - -1; - - if(GetHasFeat(FEAT_CHAOS_DRAGON, oPC)) - { - //Sets the random Element factor of the Chaos Dragons Breath Weapon. - //Affects damage, saving throw, and impact visual. - switch(Random(5)) - { - case 0: DBREED = DAMAGE_TYPE_COLD; - case 1: DBREED = DAMAGE_TYPE_ACID; - case 2: DBREED = DAMAGE_TYPE_FIRE; - case 3: DBREED = DAMAGE_TYPE_SONIC; - case 4: DBREED = DAMAGE_TYPE_ELECTRICAL; - } - } - - DiscBreath = CreateBreath(oPC, bLine, fRange, DBREED, 10, nDice, ABILITY_CONSTITUTION, nSaveDCBonus); - - //activate override for special breath weapons - DiscBreath.nOverrideSpecial = GetHasFeat(FEAT_SHADOW_DRAGON, oPC) ? BREATH_SHADOW : - GetHasFeat(FEAT_PYROCLASTIC_DRAGON, oPC) ? BREATH_PYROCLASTIC : - GetHasFeat(FEAT_TOPAZ_DRAGON, oPC) ? BREATH_TOPAZ : - 0; - - //vfx - switch(DBREED) - { - case DAMAGE_TYPE_FIRE: nVis = VFX_FNF_DRAGBREATHGROUND; break; - case DAMAGE_TYPE_ACID: nVis = VFX_FNF_DRAGBREATHACID; break; - case DAMAGE_TYPE_COLD: nVis = VFX_FNF_DRAGBREATHCOLD; break; - case DAMAGE_TYPE_ELECTRICAL: nVis = VFX_FNF_DRAGBREATHMIND; break;//VFX_FNF_DRAGBREATHELEC - case DAMAGE_TYPE_SONIC: nVis = VFX_FNF_DRAGBREATHSONIC; break; - case DAMAGE_TYPE_POSITIVE: nVis = VFX_FNF_DRAGBREATHHOLY; break; - default: nVis = VFX_FNF_DRAGBREATHODD; break; - } - - //actual breath effect - ApplyBreath(DiscBreath, lTarget); - - //breath VFX - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(nVis), lTarget); - - if(GetHasFeat(FEAT_FULL_DRAGON_BREATH, oPC)) - { - // Schedule opening the delay lock - float fDelay = RoundsToSeconds(DiscBreath.nRoundsUntilRecharge); - SendMessageToPC(oPC, "Your breath weapon will be ready again in " + IntToString(DiscBreath.nRoundsUntilRecharge) + " rounds."); - - DelayCommand(fDelay, BreathRecharge(oPC)); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_ability/x2_s2_epicward.ncs b/_haks/poa_exp_ability/x2_s2_epicward.ncs deleted file mode 100644 index 81305b2c..00000000 Binary files a/_haks/poa_exp_ability/x2_s2_epicward.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x2_s2_epicward.nss b/_haks/poa_exp_ability/x2_s2_epicward.nss deleted file mode 100644 index b5e97d27..00000000 --- a/_haks/poa_exp_ability/x2_s2_epicward.nss +++ /dev/null @@ -1,61 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Epic Ward -//:: X2_S2_EpicWard. -//:: Copyright (c) 2003 Bioware Corp. -//::////////////////////////////////////////////// -/* - Makes the caster invulnerable to damage - (equals damage reduction 50/+20) - Lasts 1 round per level - -*/ -//::////////////////////////////////////////////// -//:: Created By: Georg Zoeller -//:: Created On: Aug 12, 2003 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 15, 2003 for PRC stuff -#include "prc_inc_spells" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION); - -/* - Spellcast Hook Code - Added 2003-06-23 by GeorgZ - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - int nDuration = PRCGetCasterLevel(OBJECT_SELF); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE)); - int nLimit = 50*nDuration; - effect eDur = EffectVisualEffect(495); - effect eProt = EffectDamageReduction(10+(nDuration/2) , DAMAGE_POWER_PLUS_TWENTY, nLimit); - effect eLink = EffectLinkEffects(eDur, eProt); - eLink = EffectLinkEffects(eLink, eDur); - - // * Brent, Nov 24, making extraodinary so cannot be dispelled - eLink = ExtraordinaryEffect(eLink); - - PRCRemoveEffectsFromSpell(OBJECT_SELF, GetSpellId()); - //Apply the armor bonuses and the VFX impact - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name - -} diff --git a/_haks/poa_exp_ability/x2_s2_epmagearm.ncs b/_haks/poa_exp_ability/x2_s2_epmagearm.ncs deleted file mode 100644 index c6030c11..00000000 Binary files a/_haks/poa_exp_ability/x2_s2_epmagearm.ncs and /dev/null differ diff --git a/_haks/poa_exp_ability/x2_s2_epmagearm.nss b/_haks/poa_exp_ability/x2_s2_epmagearm.nss deleted file mode 100644 index 982033fb..00000000 --- a/_haks/poa_exp_ability/x2_s2_epmagearm.nss +++ /dev/null @@ -1,73 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Epic Mage Armor -//:: X2_S2_EpMageArm -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Gives the target +20 AC Bonus to Deflection, - Armor Enchantment, Natural Armor and Dodge. -*/ -//::////////////////////////////////////////////// -//:: Created By: Andrew Nobbs -//:: Created On: Feb 07, 2003 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 15, 2003 for PRC stuff -#include "prc_inc_spells" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); - - /* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - - */ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - int nDuration = PRCGetCasterLevel(OBJECT_SELF); - int nMetaMagic = PRCGetMetaMagicFeat(); - effect eVis = EffectVisualEffect(495); - effect eAC1, eAC2, eAC3, eAC4; - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE)); - //Check for metamagic extend - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) //Duration is +100% - { - nDuration = nDuration * 2; - } - //Set the four unique armor bonuses - eAC1 = EffectACIncrease(nDuration/4, AC_ARMOUR_ENCHANTMENT_BONUS); - eAC2 = EffectACIncrease(nDuration/4, AC_DEFLECTION_BONUS); - eAC3 = EffectACIncrease(nDuration/4, AC_DODGE_BONUS); - eAC4 = EffectACIncrease(nDuration/4, AC_NATURAL_BONUS); - effect eDur = EffectVisualEffect(VFX_DUR_SANCTUARY); - - effect eLink = EffectLinkEffects(eAC1, eAC2); - eLink = EffectLinkEffects(eLink, eAC3); - eLink = EffectLinkEffects(eLink, eAC4); - eLink = EffectLinkEffects(eLink, eDur); - - PRCRemoveEffectsFromSpell(oTarget, GetSpellId()); - - // * Brent, Nov 24, making extraodinary so cannot be dispelled - eLink = ExtraordinaryEffect(eLink); - - //Apply the armor bonuses and the VFX impact - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(nDuration)); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,1.0); - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/disease.2da b/_haks/poa_exp_spells/disease.2da deleted file mode 100644 index e1ca039d..00000000 --- a/_haks/poa_exp_spells/disease.2da +++ /dev/null @@ -1,66 +0,0 @@ -2DA V2.0 - - Label Name First_Save Subs_Save Incu_Hours Dice_1 Dam_1 Type_1 Dice_2 Dam_2 Type_2 Dice_3 Dam_3 Type_3 Type End_Incu_Script 24_Hour_Script -0 Blinding_Sickness 4689 26 26 1 4 1 0 **** **** **** **** **** **** EXTRA **** NW_S3_BlindSick -1 Cackle_Fever 4690 26 26 1 6 1 4 **** **** **** **** **** **** EXTRA **** **** -2 Demon_Fever 4691 28 28 1 6 1 2 **** **** **** **** **** **** SUPER **** Nw_S3_DemonFev -3 Devil_Chills 4692 24 24 1 4 1 0 **** **** **** **** **** **** SUPER **** **** -4 Filth_Fever 4693 22 22 1 3 1 3 3 1 2 **** **** **** EXTRA **** **** -5 Mindfire 4694 22 22 1 4 1 3 **** **** **** **** **** **** EXTRA **** **** -6 Mummy_Rot 4695 30 30 1 6 1 2 **** **** **** **** **** **** SUPER **** **** -7 Red_Ache 4696 25 25 1 6 1 0 **** **** **** **** **** **** EXTRA **** **** -8 Shakes 4697 23 23 1 6 1 0 **** **** **** **** **** **** EXTRA **** **** -9 Slimy_Doom 4698 24 24 1 4 1 1 **** **** **** **** **** **** EXTRA **** **** -10 Red_Slaad_Eggs 4699 27 27 1 6 2 1 6 2 0 6 2 2 EXTRA NW_S3_SlaadEgg **** -11 Ghoul_Rot 4700 28 28 1 6 1 2 6 1 0 **** **** **** SUPER **** **** -12 Zombie_Creep 4701 25 25 1 4 1 2 4 1 1 **** **** **** SUPER **** **** -13 Dread_Blisters 4702 23 23 1 4 1 2 4 1 5 **** **** **** SUPER **** **** -14 Burrow_Maggots 4703 27 27 1 4 1 3 4 1 4 **** **** **** SUPER **** **** -15 Soldier_Shakes 4704 35 35 1 **** **** **** **** **** **** **** **** **** **** **** Nw_S3_SoldShake -16 Vermin_Madness 4705 23 13 1 1 1 3 1 1 4 1 1 5 EXTRA **** **** -17 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -18 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -19 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -20 Contagion_Blinding_Sickness 4689 127 16 1 4 1 0 **** **** **** **** **** **** EXTRA **** NW_S3_BlindSick -21 Contagion_Cackle_Fever 4690 127 16 1 6 1 4 **** **** **** **** **** **** EXTRA **** **** -22 Contagion_Filth_Fever 4693 127 12 1 3 1 3 3 1 2 **** **** **** EXTRA **** **** -23 Contagion_Mindfire 4694 127 12 1 4 1 3 **** **** **** **** **** **** EXTRA **** **** -24 Contagion_Red_Ache 4696 127 15 1 6 1 0 **** **** **** **** **** **** EXTRA **** **** -25 Contagion_Shakes 4697 127 13 1 6 1 0 **** **** **** **** **** **** EXTRA **** **** -26 Contagion_Slimy_Doom 4698 127 14 1 4 1 1 **** **** **** **** **** **** EXTRA **** **** -27 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -28 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -29 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -30 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -31 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -32 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -33 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -34 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -35 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -36 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -37 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -38 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -39 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -40 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -41 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -42 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -43 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -44 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -45 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -46 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -47 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -48 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -49 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -50 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -51 Pestilence_disease 16826251 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** sp_pest_aux -52 Talonas_Blight 16824947 127 127 2 1 4 2 1 4 5 **** **** **** SUPER **** prc_talona -53 Blue_guts 16829286 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_blue_guts -54 Soul_Rot 16829287 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_soul_rot -55 Agony_Addiction **** 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_addct_ag -56 Baccaran_Addiction **** 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_addct_bac -57 Devilweed_Addiction **** 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_addct_dw -58 Luhix_Addiction **** 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_addct_lhx -59 Mushroom_powder_Addiction **** 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_addct_msh -60 Sannish_Addiction **** 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_addct_snh -61 Terran_Brandy_Addiction **** 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_addct_tb -62 Vodare_Addiction **** 127 127 0 **** **** **** **** **** **** **** **** **** SUPER **** prc_addct_vdr diff --git a/_haks/poa_exp_spells/nw_s0_aid.ncs b/_haks/poa_exp_spells/nw_s0_aid.ncs deleted file mode 100644 index 38a174be..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_aid.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_aid.nss b/_haks/poa_exp_spells/nw_s0_aid.nss deleted file mode 100644 index 7fc39750..00000000 --- a/_haks/poa_exp_spells/nw_s0_aid.nss +++ /dev/null @@ -1,131 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Aid/Mass Aid -//:: FileName nw_s0_aid.nss -/*::////////////////////////////////////////////// -Aid -Enchantment (Compulsion) [Mind-Affecting] -Level: Clr 2, Good 2, Luck 2 -Components: V, S, DF -Casting Time: 1 standard action -Range: Touch -Target: Living creature touched -Duration: 1 min./level -Saving Throw: None -Spell Resistance: Yes (harmless) - -Aid grants the target a +1 morale bonus on attack -rolls and saves against fear effects, plus -temporary hit points equal to 1d8 + caster level -(to a maximum of 1d8 + 10 temporary hit points at -caster level 10th). - -Mass Aid -Enchantment (Compulsion) [Mind-Affecting] -Level: Clr 3 -Range: Close (25 ft. + 5 ft./2 levels) -Targets: One or more creatures within a 30 ft. range. -Components: V, S, DF -Casting Time: 1 standard action -Duration: 1 min./level -Saving Throw: None -Spell Resistance: Yes (harmless) - -Subjects gain +1 morale bonus on attack rolls and -saves against fear effects, plus temporary hit -points equal to 1d8 + caster level (to a maximum -of 1d8 + 15 at caster level 15). -//::*///////////////////////////////////////////// - -#include "prc_sp_func" - -void StripBuff(object oTarget, int nBuffSpellID, int nMassBuffSpellID) -{ - effect eEffect = GetFirstEffect(oTarget); - while (GetIsEffectValid(eEffect)) - { - int nSpellID = GetEffectSpellId(eEffect); - if (nBuffSpellID == nSpellID || nMassBuffSpellID == nSpellID) - RemoveEffect(oTarget, eEffect); - eEffect = GetNextEffect(oTarget); - } -} - -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nSpellID) -{ - //Declare major variables - location lTarget; - int nMetaMagic = PRCGetMetaMagicFeat(); - int bMass = nSpellID == SPELL_MASS_AID; - int nBonusLimit = bMass ? 20 : 15; - float fDuration = TurnsToSeconds(nCasterLevel); - if(nMetaMagic & METAMAGIC_EXTEND) fDuration *= 2; - - effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID); - effect eAttack = EffectAttackIncrease(1); - effect eSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_FEAR); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eLink = EffectLinkEffects(eAttack, eSave); - eLink = EffectLinkEffects(eLink, eDur); - - if(bMass) - { - lTarget = PRCGetSpellTargetLocation(); - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - while(GetIsObjectValid(oTarget)) - { - if(((!bMass) || (spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, oCaster))) && PRCGetIsAliveCreature(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID, FALSE)); - - int nBonus = d8(1); - if(nMetaMagic & METAMAGIC_MAXIMIZE) nBonus = 8; - if(nMetaMagic & METAMAGIC_EMPOWER) nBonus += (nBonus / 2); - nBonus += nBonusLimit > nCasterLevel ? nCasterLevel : nBonusLimit; - - effect eHP = EffectTemporaryHitpoints(nBonus); - - // Remove pervious castings of it - StripBuff(oTarget, SPELL_AID, SPELL_MASS_AID); - - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, nSpellID, nCasterLevel, oCaster); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, fDuration); - } - if(!bMass) break; - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - if (!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT); - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nSpellID = PRCGetSpellId(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget && IsTouchSpell(nSpellID)) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nSpellID); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nSpellID)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_awaken.ncs b/_haks/poa_exp_spells/nw_s0_awaken.ncs deleted file mode 100644 index 2a75325a..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_awaken.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_awaken.nss b/_haks/poa_exp_spells/nw_s0_awaken.nss deleted file mode 100644 index 17d25acc..00000000 --- a/_haks/poa_exp_spells/nw_s0_awaken.nss +++ /dev/null @@ -1,92 +0,0 @@ -/* - nw_s0_awaken - - This spell makes an animal ally more - powerful, intelligent and robust for the - duration of the spell. Requires the caster to - make a Will save to succeed. - - By: Preston Watamaniuk - Created: Aug 10, 2001 - Modified: Jun 12, 2006 -*/ - -#include "prc_sp_func" -#include "inc_npc" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - //Declare major variables - effect eStr = EffectAbilityIncrease(ABILITY_STRENGTH, d4(4)); - effect eCon = EffectAbilityIncrease(ABILITY_CONSTITUTION, d4(4)); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eInt; - effect eAttack = EffectAttackIncrease(d4(2)); - effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID); - int nInt = d10(); - //int nDuration = 24; - int nMetaMagic = PRCGetMetaMagicFeat(); - - if(GetAssociateTypeNPC(oTarget) == ASSOCIATE_TYPE_ANIMALCOMPANION && GetMasterNPC(oTarget) == oCaster) - { - if(!GetHasSpellEffect(SPELL_AWAKEN)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_AWAKEN, FALSE)); - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nInt = 10;//Damage is at max - if(nMetaMagic & METAMAGIC_EMPOWER) - nInt += (nInt/2); //Damage/Healing is +50% - //if(nMetaMagic & METAMAGIC_EXTEND) - // nDuration *= 2; //Duration is +100% - - eInt = EffectAbilityIncrease(ABILITY_WISDOM, nInt); - - effect eLink = EffectLinkEffects(eStr, eCon); - eLink = EffectLinkEffects(eLink, eAttack); - eLink = EffectLinkEffects(eLink, eInt); - eLink = EffectLinkEffects(eLink, eDur); - eLink = SupernaturalEffect(eLink); - //Apply the VFX impact and effects - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget, 0.0f, TRUE, SPELL_AWAKEN, nCasterLevel); - } - } - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - if(!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_barkskin.ncs b/_haks/poa_exp_spells/nw_s0_barkskin.ncs deleted file mode 100644 index 2777a676..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_barkskin.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_barkskin.nss b/_haks/poa_exp_spells/nw_s0_barkskin.nss deleted file mode 100644 index 9e899b43..00000000 --- a/_haks/poa_exp_spells/nw_s0_barkskin.nss +++ /dev/null @@ -1,95 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Barkskin -//:: nw_s0_barkskin.nss -//:://///////////////////////////////////////////// -/* -Transmutation -Level: Drd 2, Rgr 2, Plant 2 -Components: V, S, DF -Casting Time: 1 standard action -Range: Touch -Target: Living creature touched -Duration: 10 min./level -Saving Throw: None -Spell Resistance: Yes (harmless) - -Barkskin toughens a creature’s skin. The effect -grants a +2 enhancement bonus to the creature’s -existing natural armor bonus. This enhancement -bonus increases by 1 for every three caster levels -above 3rd, to a maximum of +5 at caster level 12th. - -The enhancement bonus provided by barkskin stacks -with the target’s natural armor bonus, but not with -other enhancement bonuses to natural armor. A -creature without natural armor has an effective -natural armor bonus of +0. -*/ -//::////////////////////////////////////////////// -//:: By: Preston Watamaniuk -//:: Created: Feb 21, 2001 -//:: Modified: Jun 12, 2006 -//::////////////////////////////////////////////// - -#include "prc_sp_func" - -int DoSpell(object oCaster, object oTarget, int nCasterLevel) -{ - if(!PRCGetIsAliveCreature(oTarget)) - { - FloatingTextStringOnCreature("Selected target is not a living creature.", oCaster, FALSE); - return FALSE; - } - - float fDuration = TurnsToSeconds(nCasterLevel) * 10; - //Enter Metamagic conditions - int nMetaMagic = PRCGetMetaMagicFeat(); - if(nMetaMagic & METAMAGIC_EXTEND) //Duration is +100% - fDuration *= 2; - - //Determine AC Bonus based Level. - int nBonus = (nCasterLevel / 3) + 1; - if(nBonus > 20) - nBonus = 20; - - //Make sure the Armor Bonus is of type Natural - effect eLink = EffectACIncrease(nBonus, AC_NATURAL_BONUS); - eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_PROT_BARKSKIN)); - eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - effect eHead = EffectVisualEffect(VFX_IMP_HEAD_NATURE); - - //Signal spell cast at event - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_BARKSKIN, FALSE)); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, SPELL_BARKSKIN, nCasterLevel); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eHead, oTarget); - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - if (!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(); - int nEvent = GetLocalInt(OBJECT_SELF, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(OBJECT_SELF, PRC_SPELL_HOLD) && OBJECT_SELF == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(OBJECT_SELF, 1); //change 1 to number of charges - return; - } - DoSpell(OBJECT_SELF, oTarget, nCasterLevel); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(OBJECT_SELF, oTarget, nCasterLevel)) - DecrementSpellCharges(OBJECT_SELF); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_bladebara.ncs b/_haks/poa_exp_spells/nw_s0_bladebara.ncs deleted file mode 100644 index 47fd2a8d..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_bladebara.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_bladebara.nss b/_haks/poa_exp_spells/nw_s0_bladebara.nss deleted file mode 100644 index 0e9e10f0..00000000 --- a/_haks/poa_exp_spells/nw_s0_bladebara.nss +++ /dev/null @@ -1,81 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Blade Barrier: On Enter -//:: NW_S0_BladeBarA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creates a wall 10m long and 2m thick of whirling - blades that hack and slice anything moving into - them. Anything caught in the blades takes - 2d6 per caster level. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: July 20, 2001 -//::////////////////////////////////////////////// - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oTarget = GetEnteringObject(); - effect eDam; - effect eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); - object aoeCreator = GetAreaOfEffectCreator(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nLevel = GetLocalInt(OBJECT_SELF, "X2_AoE_Caster_Level"); - int CasterLvl = nLevel; - - int nPenetr = SPGetPenetrAOE(aoeCreator,CasterLvl); - - //Make level check - if (nLevel > 40) - { - nLevel = 40; - } - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoeCreator)) - { - //Fire spell cast at event - SignalEvent(oTarget, EventSpellCastAt(aoeCreator, SPELL_BLADE_BARRIER)); - //Roll Damage - int nDamage = d6(nLevel); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = nLevel * 6;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Make SR Check - if (!PRCDoResistSpell(aoeCreator, oTarget,nPenetr) ) - { - // 1.69 change - //Adjust damage according to Reflex Save, Evasion or Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget,aoeCreator),SAVING_THROW_TYPE_SPELL); - - //Set damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_SLASHING); - //Apply damage and VFX - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} - diff --git a/_haks/poa_exp_spells/nw_s0_bladebarc.ncs b/_haks/poa_exp_spells/nw_s0_bladebarc.ncs deleted file mode 100644 index 51589aed..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_bladebarc.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_bladebarc.nss b/_haks/poa_exp_spells/nw_s0_bladebarc.nss deleted file mode 100644 index da49e69f..00000000 --- a/_haks/poa_exp_spells/nw_s0_bladebarc.nss +++ /dev/null @@ -1,102 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Blade Barrier: Heartbeat -//:: NW_S0_BladeBarA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creates a wall 10m long and 2m thick of whirling - blades that hack and slice anything moving into - them. Anything caught in the blades takes - 2d6 per caster level. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: July 20, 2001 -//::////////////////////////////////////////////// - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oTarget; - effect eDam; - effect eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); - object aoeCreator = GetAreaOfEffectCreator(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int CasterLvl = GetLocalInt(OBJECT_SELF, "X2_AoE_Caster_Level"); - int nLevel = CasterLvl; - //Make level check - if (nLevel > 40) - { - nLevel = 40; - } - - int nPenetr = SPGetPenetrAOE(aoeCreator,CasterLvl); - - - //-------------------------------------------------------------------------- - // GZ 2003-Oct-15 - // Add damage to placeables/doors now that the command support bit fields - //-------------------------------------------------------------------------- - oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE | OBJECT_TYPE_DOOR); - - //-------------------------------------------------------------------------- - // GZ 2003-Oct-15 - // When the caster is no longer there, all functions calling - // GetAreaOfEffectCreator will fail. Its better to remove the barrier then - //-------------------------------------------------------------------------- - if (!GetIsObjectValid(aoeCreator)) - { - DestroyObject(OBJECT_SELF); - return; - } - - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoeCreator)) - { - //Fire spell cast at event - SignalEvent(oTarget, EventSpellCastAt(aoeCreator, SPELL_BLADE_BARRIER)); - //Make SR Check - if (!PRCDoResistSpell(aoeCreator, oTarget,CasterLvl) ) - { - int nDC = PRCGetSaveDC(oTarget,aoeCreator); - //Roll Damage - int nDamage = d6(nLevel); - //Enter Metamagic conditions - if((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = nLevel * 6;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - // 1.69 change - //Adjust damage according to Reflex Save, Evasion or Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget,aoeCreator),SAVING_THROW_TYPE_SPELL); - //Set damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_SLASHING); - //Apply damage and VFX - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE | OBJECT_TYPE_DOOR); - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name - -} - diff --git a/_haks/poa_exp_spells/nw_s0_burnhand.ncs b/_haks/poa_exp_spells/nw_s0_burnhand.ncs deleted file mode 100644 index 5e2bf15e..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_burnhand.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_burnhand.nss b/_haks/poa_exp_spells/nw_s0_burnhand.nss deleted file mode 100644 index a4532f9d..00000000 --- a/_haks/poa_exp_spells/nw_s0_burnhand.nss +++ /dev/null @@ -1,98 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Burning Hands -//:: NW_S0_BurnHand -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -Evocation [Fire] -Level: Fire 1, Sor/Wiz 1 -Components: V, S -Casting Time: 1 standard action -Range: 15 ft. -Area: Cone-shaped burst -Duration: Instantaneous -Saving Throw: Reflex half -Spell Resistance: Yes - -A cone of searing flame shoots from your fingertips. -Any creature in the area of the flames takes 1d4 -points of fire damage per caster level (maximum 5d4). -Flammable materials burn if the flames touch them. -A character can extinguish burning items as a -full-round action. - -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: April 5, 2001 -//::////////////////////////////////////////////// -//:: Last Updated On: April 5th, 2001 -//:: VFX Pass By: Preston W, On: June 20, 2001 -//:: Update Pass By: Preston W, On: July 23, 2001 -//:: modified by mr_bumpkin Dec 4, 2003 - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE); - int nSaveType = ChangedSaveType(EleDmg); - int nDice = PRCMin(20, nCasterLevel); - int nDamage; - float fDist; - - //Declare and assign personal impact visual effect. - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - - //Cycle through the targets within the spell shape until an invalid object is captured. - while(GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - //Signal spell cast at event to fire. - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_BURNING_HANDS)); - //Calculate the delay time on the application of effects based on the distance - //between the caster and the target - fDist = GetDistanceBetween(oCaster, oTarget)/20; - //Make SR check, and appropriate saving throw. - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDist) && oTarget != oCaster) - { - nDamage = d4(nDice); - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 4 * nDice;//Damage is at max - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage += nDamage / 2; //Damage/Healing is +50% - - //Run the damage through the various reflex save and evasion feats - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, oCaster), nSaveType); - if(nDamage > 0) - { - effect eFire = PRCEffectDamage(oTarget, nDamage, EleDmg); - - // Apply effects to the currently selected target. - DelayCommand(fDist, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDist, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget)); - PRCBonusDamage(oTarget); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/nw_s0_calllghtn.ncs b/_haks/poa_exp_spells/nw_s0_calllghtn.ncs deleted file mode 100644 index 0ac5e3b0..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_calllghtn.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_calllghtn.nss b/_haks/poa_exp_spells/nw_s0_calllghtn.nss deleted file mode 100644 index cfaf2b10..00000000 --- a/_haks/poa_exp_spells/nw_s0_calllghtn.nss +++ /dev/null @@ -1,112 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Call Lightning -//:: NW_S0_CallLghtn.nss -//:: Copyright (c) 2001 Bioware Corp. -//:://///////////////////////////////////////////// -/* -Evocation [Electricity] -Level: Drd 3 -Components: V, S -Casting Time: 1 round -Range: Medium (100 ft. + 10 ft./level) -Effect: One or more 30-ft.-long vertical lines of lightning -Duration: 1 min./level -Saving Throw: Reflex half -Spell Resistance: Yes - -Immediately upon completion of the spell, and once -per round thereafter, you may call down a 5-foot-wide, -30-foot-long, vertical bolt of lightning that deals -3d6 points of electricity damage. The bolt of lightning -flashes down in a vertical stroke at whatever target -point you choose within the spell’s range (measured -from your position at the time). Any creature in the -target square or in the path of the bolt is affected. - -You need not call a bolt of lightning immediately; -other actions, even spellcasting, can be performed. -However, each round after the first you may use a -standard action (concentrating on the spell) to call -a bolt. You may call a total number of bolts equal to -your caster level (maximum 10 bolts). - -If you are outdoors and in a stormy area—a rain shower, -clouds and wind, hot and cloudy conditions, or even a -tornado (including a whirlwind formed by a djinni or an -air elemental of at least Large size)—each bolt deals -3d10 points of electricity damage instead of 3d6. - -This spell functions indoors or underground but not -underwater. - -*/ -//::////////////////////////////////////////////// -//:: Notes: totally not like PnP version, -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 22, 2001 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 20, 2001 -//:: modified by mr_bumpkin Dec 4, 2003 - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLvl + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDice = PRCMin(20, nCasterLvl); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_ELECTRICAL); - int nSaveType = ChangedSaveType(EleDmg); - - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_M); - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, oCaster)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_CALL_LIGHTNING)); - //Get the distance between the explosion and the target to calculate delay - float fDelay = PRCGetRandomDelay(0.4, 1.75); - if (!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay)) - { - //Roll damage for each target - int nDamage = d6(nDice); - //Resolve metamagic - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 6 * nDice; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage += nDamage / 2; - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, oCaster), nSaveType); - if(nDamage > 0) - { - //Set the damage effect - effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - - // Apply effects to the currently selected target. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/nw_s0_chlightn.ncs b/_haks/poa_exp_spells/nw_s0_chlightn.ncs deleted file mode 100644 index 777c813c..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_chlightn.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_chlightn.nss b/_haks/poa_exp_spells/nw_s0_chlightn.nss deleted file mode 100644 index b98fa9d4..00000000 --- a/_haks/poa_exp_spells/nw_s0_chlightn.nss +++ /dev/null @@ -1,204 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Chain Lightning -//:: NW_S0_ChLightn -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - The primary target is struck with 1d6 per caster, - 1/2 with a reflex save. 1 secondary target per - level is struck for 1d6 / 2 caster levels. No - repeat targets can be chosen. -*/ -//::////////////////////////////////////////////// -//:: Created By: Brennon Holmes -//:: Created On: March 8, 2001 -//::////////////////////////////////////////////// -//:: Last Updated By: Preston Watamaniuk, On: April 26, 2001 -//:: Update Pass By: Preston W, On: July 26, 2001 - -/* -bugfix by Kovi 2002.07.28 -- successful saving throw and (improved) evasion was ignored for - secondary targets, -- all secondary targets suffered exactly the same damage -2002.08.25 -- primary target was not effected -*/ - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nCasterLevel = CasterLvl; - //Limit caster level - // June 2/04 - Bugfix: Cap the level BEFORE the damage calculation, not after. Doh. - if (nCasterLevel > 40) //alterado cap de 20 para 40 rafael - { - nCasterLevel = 40; - } - - int nDamage = d6(nCasterLevel); - int nDamStrike; - int nNumAffected = 0; - int nMetaMagic = PRCGetMetaMagicFeat(); - //Declare lightning effect connected the casters hands - effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF, BODY_NODE_HAND);; - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - effect eDamage; - object oFirstTarget = PRCGetSpellTargetObject(); - object oHolder; - object oTarget; - location lSpellLocation; - - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6 * nCasterLevel;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - - CasterLvl +=SPGetPenetr(); - - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_ELECTRICAL); - - //Damage the initial target - if (spellsIsTarget(oFirstTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - SignalEvent(oFirstTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CHAIN_LIGHTNING)); - //Make an SR Check - if (!PRCDoResistSpell(OBJECT_SELF, oFirstTarget,CasterLvl)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Adjust damage via Reflex Save or Evasion or Improved Evasion - nDamStrike = PRCGetReflexAdjustedDamage(nDamage, oFirstTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY); - //Set the damage effect for the first target - eDamage = PRCEffectDamage(oTarget, nDamStrike, EleDmg); - //Apply damage to the first target and the VFX impact. - if(nDamStrike > 0) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oFirstTarget); - PRCBonusDamage(oFirstTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oFirstTarget); - } - } - } - //Apply the lightning stream effect to the first target, connecting it with the caster - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oFirstTarget,0.5,FALSE); - - - //Reinitialize the lightning effect so that it travels from the first target to the next target - eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oFirstTarget, BODY_NODE_CHEST); - - - float fDelay = 0.2; - int nCnt = 0; - - - // * - // * Secondary Targets - // * - - - //Get the first target in the spell shape - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oFirstTarget), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - while (GetIsObjectValid(oTarget) && nCnt < nCasterLevel) - { - //Make sure the caster's faction is not hit and the first target is not hit - if (oTarget != oFirstTarget && spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF) - { - //Connect the new lightning stream to the older target and the new target - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5,FALSE)); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CHAIN_LIGHTNING)); - //Do an SR check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - nDamage = d6(nCasterLevel) ; - - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6 * nCasterLevel;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/is +50% - } - //Adjust damage via Reflex Save or Evasion or Improved Evasion - nDamStrike = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY); - //Apply the damage and VFX impact to the current target - eDamage = PRCEffectDamage(oTarget, nDamStrike /2, EleDmg); - if(nDamStrike > 0) //age > 0) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oTarget)); - PRCBonusDamage(oTarget); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget)); - } - } - oHolder = oTarget; - - //change the currect holder of the lightning stream to the current target - if (GetObjectType(oTarget) == OBJECT_TYPE_CREATURE) - { - eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oHolder, BODY_NODE_CHEST); - } - else - { - // * April 2003 trying to make sure beams originate correctly - effect eNewLightning = EffectBeam(VFX_BEAM_LIGHTNING, oHolder, BODY_NODE_CHEST); - if(GetIsEffectValid(eNewLightning)) - { - eLightning = eNewLightning; - } - } - - fDelay = fDelay + 0.1f; - } - //Count the number of targets that have been hit. - if(GetObjectType(oTarget) == OBJECT_TYPE_CREATURE) - { - nCnt++; - } - - // April 2003: Setting the new origin for the beam - // oFirstTarget = oTarget; - - //Get the next target in the shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oFirstTarget), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - - } diff --git a/_haks/poa_exp_spells/nw_s0_circdeath.ncs b/_haks/poa_exp_spells/nw_s0_circdeath.ncs deleted file mode 100644 index 16eac832..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_circdeath.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_circdeath.nss b/_haks/poa_exp_spells/nw_s0_circdeath.nss deleted file mode 100644 index b933b3b8..00000000 --- a/_haks/poa_exp_spells/nw_s0_circdeath.nss +++ /dev/null @@ -1,152 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Circle of Death -//:: NW_S0_CircDeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - The caster slays a number of HD worth of creatures - equal to 1d4 times level. The creature gets a - Fort Save or dies. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: June 1, 2001 -//::////////////////////////////////////////////// -//:: Last Updated By: Aidan Scanlan -//:: VFX Pass By: Preston W, On: June 20, 2001 -//:: Update Pass By: Preston W, On: July 25, 2001 - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - - -void main() -{ - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget; - object oLowest; - effect eDeath = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - effect eFNF = EffectVisualEffect(VFX_FNF_LOS_EVIL_20); - int bContinueLoop = FALSE; //Used to determine if we have a next valid target - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nHD = d4(CasterLvl); //Roll to see how many HD worth of creature will be killed - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCurrentHD; - int bAlreadyAffected; - int nMax = 40;// maximun hd creature affected, set this to 9 so that a lower HD creature is chosen automatically - //Also 9 is the maximum HD a creature can have and still be affected by the spell - float fDelay; - string sIdentifier = GetTag(OBJECT_SELF); - - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nHD = 4 * CasterLvl; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nHD = nHD + (nHD/2); //Damage/Healing is +50% - } - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, PRCGetSpellTargetLocation()); - //Check for at least one valid object to start the main loop - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, PRCGetSpellTargetLocation()); - if (GetIsObjectValid(oTarget)) - { - bContinueLoop = TRUE; - } - // The above checks to see if there is at least one valid target. If no value target exists we do not enter - // the loop. - - - CasterLvl +=SPGetPenetr(); - - - while ((nHD > 0) && (bContinueLoop)) - { - int nLow = nMax; //Set nLow to the lowest HD creature in the last pass through the loop - bContinueLoop = FALSE; //Set this to false so that the loop only continues in the case of new low HD creature - //Get first target creature in loop - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, PRCGetSpellTargetLocation()); - while (GetIsObjectValid(oTarget)) - { - //Make sure the currect target is not an enemy - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF) - { - //Get a local set on the creature that checks if the spell has already allowed them to save - bAlreadyAffected = GetLocalInt(oTarget, "bDEATH" + sIdentifier); - if (!bAlreadyAffected) - { - nCurrentHD = GetHitDice(oTarget); - //If the selected creature is of lower HD then the current nLow value and - //the HD of the creature is of less HD than the number of HD available for - //the spell to affect then set the creature as the currect primary target - if(nCurrentHD < nLow && nCurrentHD <= nHD) - { - nLow = nCurrentHD; - oLowest = oTarget; - bContinueLoop = TRUE; - } - } - } - //Get next target in shape to test for a new - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, PRCGetSpellTargetLocation()); - } - //Check to make sure that oLowest has changed - if(bContinueLoop == TRUE) - { - //Fire cast spell at event for the specified target - SignalEvent(oLowest, EventSpellCastAt(OBJECT_SELF, SPELL_CIRCLE_OF_DEATH)); - fDelay = PRCGetRandomDelay(); - if(!PRCDoResistSpell(OBJECT_SELF, oLowest,CasterLvl, fDelay)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Make a Fort Save versus death effects - if(!PRCMySavingThrow(SAVING_THROW_FORT, oLowest, nDC, SAVING_THROW_TYPE_DEATH, OBJECT_SELF, fDelay)) - { - DeathlessFrenzyCheck(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oLowest); - //DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oLowest)); - } - } - //Even if the target made their save mark them as having been affected by the spell - SetLocalInt(oLowest, "bDEATH" + sIdentifier, TRUE); - //Destroy the local after 1/4 of a second in case other Circles of Death are cast on - //the creature laster - DelayCommand(fDelay + 0.25, DeleteLocalInt(oLowest, "bDEATH" + sIdentifier)); - //Adjust the number of HD that have been affected by the spell - nHD = nHD - GetHitDice(oLowest); - oLowest = OBJECT_INVALID; - } - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_cloudkilla.ncs b/_haks/poa_exp_spells/nw_s0_cloudkilla.ncs deleted file mode 100644 index 82fc332a..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_cloudkilla.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_cloudkilla.nss b/_haks/poa_exp_spells/nw_s0_cloudkilla.nss deleted file mode 100644 index fe0ca39f..00000000 --- a/_haks/poa_exp_spells/nw_s0_cloudkilla.nss +++ /dev/null @@ -1,115 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cloudkill: On Enter -//:: NW_S0_CloudKillA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - All creatures with 3 or less HD die, those with - 4 to 6 HD must make a save Fortitude Save or die. - Those with more than 6 HD take 1d10 Poison damage - every round. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 17, 2001 -//::////////////////////////////////////////////// - - -//:: modified by mr_bumpkin Dec 4, 2003 -//:: modified by Ornedan Dec 22, 2004 to PnP rules -#include "prc_inc_spells" - -#include "prc_add_spell_dc" - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); - - - //Declare major variables - object oTarget = GetEnteringObject(); - int nHD = GetHitDice(oTarget); - effect eDeath = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - effect eNeg = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eConceal = EffectConcealment(20); - effect eVis2 = EffectVisualEffect(VFX_DUR_GHOST_TRANSPARENT); - effect eLink = EffectLinkEffects(eConceal, eVis2); - - //effect eDam; - int nDam = d4(); - int nMetaMagic = PRCGetMetaMagicFeat(); - - object aoeCreator = GetAreaOfEffectCreator(); - int CasterLvl = GetLocalInt(OBJECT_SELF, "X2_AoE_Caster_Level"); - - //int nPenetr = SPGetPenetrAOE(aoeCreator,CasterLvl); - - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 4;//Damage is at max - } - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam = nDam + (nDam/2); //Damage/Healing is +50% - } - - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoeCreator)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CLOUDKILL)); - - //Concealement by fog happens no matter what - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eConceal, oTarget, 0.0f, FALSE); - - //Determine spell effect based on the targets HD - if (nHD <= 20) - { - if(!GetIsImmune(oTarget, IMMUNITY_TYPE_DEATH)) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - } - } - else if (nHD >= 21 && nHD <= 40) - { - //Make a save or die - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, aoeCreator), SAVING_THROW_TYPE_DEATH, OBJECT_SELF)) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - else - { - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - // This script does nothing if it has Mettle, bail - return; - AssignCommand(aoeCreator, ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDam, DURATION_TYPE_TEMPORARY, TRUE, -1.0f)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNeg, oTarget); - } - } - else - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, aoeCreator), SAVING_THROW_TYPE_SPELL, OBJECT_SELF)) - { - AssignCommand(aoeCreator, ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDam, DURATION_TYPE_TEMPORARY, TRUE, -1.0f)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNeg, oTarget); - } - else - { - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - // This script does nothing if it has Mettle, bail - return; - // Halve the damage on succesfull save. - AssignCommand(aoeCreator, ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDam / 2, DURATION_TYPE_TEMPORARY, TRUE, -1.0f)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNeg, oTarget); - } - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_cloudkillc.ncs b/_haks/poa_exp_spells/nw_s0_cloudkillc.ncs deleted file mode 100644 index 1b605aa0..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_cloudkillc.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_cloudkillc.nss b/_haks/poa_exp_spells/nw_s0_cloudkillc.nss deleted file mode 100644 index 9ca56a68..00000000 --- a/_haks/poa_exp_spells/nw_s0_cloudkillc.nss +++ /dev/null @@ -1,109 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cloudkill: Heartbeat -//:: NW_S0_CloudKillC.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - All creatures with 3 or less HD die, those with - 4 to 6 HD must make a save Fortitude Save or die. - Those with more than 6 HD take 1d10 Poison damage - every round. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 17, 2001 -//::////////////////////////////////////////////// - - -//:: modified by mr_bumpkin Dec 4, 2003 -//:: modified by Ornedan Dec 22, 2004 to PnP rules -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); - - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage = d4(); - //effect eDam; - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - object oTarget; - int nHD; - float fDelay; - - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDamage = 4;//Damage is at max - } - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - - //-------------------------------------------------------------------------- - // GZ 2003-Oct-15 - // When the caster is no longer there, all functions calling - // GetAreaOfEffectCreator will fail. Its better to remove the barrier then - //-------------------------------------------------------------------------- - if (!GetIsObjectValid(GetAreaOfEffectCreator())) - { - DestroyObject(OBJECT_SELF); - return; - } - - object aoeCreator = GetAreaOfEffectCreator(); - int CasterLvl = GetLocalInt(OBJECT_SELF, "X2_AoE_Caster_Level"); - int nPenetr = SPGetPenetrAOE(aoeCreator,CasterLvl); - - - //Set damage effect - //Get the first object in the persistant AOE - oTarget = GetFirstInPersistentObject(); - while(GetIsObjectValid(oTarget)) - { - fDelay = PRCGetRandomDelay(); - if(spellsIsTarget(oTarget,SPELL_TARGET_STANDARDHOSTILE , aoeCreator) ) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CLOUDKILL)); - - nHD = GetHitDice(oTarget); - - //Apply VFX impact and damage - //Creatures with less than 6 HD take full damage automatically - //Any with more than 6 get to save (Fortitued) for half - if (nHD < 40) - { - AssignCommand(aoeCreator, ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDamage, DURATION_TYPE_TEMPORARY, TRUE, -1.0f)); - } - else - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (PRCGetSaveDC(oTarget,aoeCreator)), SAVING_THROW_TYPE_SPELL, OBJECT_SELF)) - { - AssignCommand(aoeCreator, ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDamage, DURATION_TYPE_TEMPORARY, TRUE, -1.0f)); - } - else - { - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - // This script does nothing if it has Mettle, bail - nDamage = 0; - // Halve the damage on succesfull save. - AssignCommand(aoeCreator, ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDamage / 2, DURATION_TYPE_TEMPORARY, TRUE, -1.0f)); - } - } - } - //Get the next target in the AOE - oTarget = GetNextInPersistentObject(); - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_colspray.ncs b/_haks/poa_exp_spells/nw_s0_colspray.ncs deleted file mode 100644 index 68d60636..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_colspray.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_colspray.nss b/_haks/poa_exp_spells/nw_s0_colspray.nss deleted file mode 100644 index 74f19ec0..00000000 --- a/_haks/poa_exp_spells/nw_s0_colspray.nss +++ /dev/null @@ -1,137 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Color Spray -//:: NW_S0_ColSpray.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A cone of sparkling lights flashes out in a cone - from the casters hands affecting all those within - the Area of Effect. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: July 25, 2001 -//::////////////////////////////////////////////// - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ILLUSION); - -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - int nHD; - int nDuration; - float fDelay; - object oTarget; - effect eSleep = EffectSleep(); - effect eStun = EffectStunned(); - effect eBlind = EffectBlindness(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - - effect eLink1 = EffectLinkEffects(eSleep, eMind); - - effect eLink2 = EffectLinkEffects(eStun, eMind); - eLink2 = EffectLinkEffects(eLink2, eDur); - - effect eLink3 = EffectLinkEffects(eBlind, eMind); - - effect eVis1 = EffectVisualEffect(VFX_IMP_SLEEP); - effect eVis2 = EffectVisualEffect(VFX_IMP_STUN); - effect eVis3 = EffectVisualEffect(VFX_IMP_BLIND_DEAF_M); - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nPenetr = CasterLvl + SPGetPenetr(); - - - //Get first object in the spell cone - oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 10.0, PRCGetSpellTargetLocation(), TRUE); - //Cycle through the target until the current object is invalid - while (GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) - && !PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, oTarget) - && oTarget != OBJECT_SELF) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_COLOR_SPRAY)); - fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/30; - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nPenetr, fDelay)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, OBJECT_SELF, fDelay)) - { - nDuration = 3 + d4(); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDuration = 7;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDuration = nDuration + (nDuration/2); //Damage/Healing is +50% - } - if ((nMetaMagic & METAMAGIC_EXTEND)) - { - nDuration = nDuration *2; //Duration is +100% - } - - nHD = GetHitDice(oTarget); - if(nHD <= 20) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis1, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink1, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl)); - } - else if(nHD > 20 && nHD < 30) - { - nDuration = nDuration - 1; - //Apply the VFX impact and effects - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis3, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink3, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl)); } - else - { - nDuration = nDuration - 2; - //Apply the VFX impact and effects - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink2, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl)); - } - } - } - } - //Get next target in spell area - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 10.0, PRCGetSpellTargetLocation(), TRUE); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} - diff --git a/_haks/poa_exp_spells/nw_s0_conecold.ncs b/_haks/poa_exp_spells/nw_s0_conecold.ncs deleted file mode 100644 index 9bcb07b9..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_conecold.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_conecold.nss b/_haks/poa_exp_spells/nw_s0_conecold.nss deleted file mode 100644 index 4cb3fa39..00000000 --- a/_haks/poa_exp_spells/nw_s0_conecold.nss +++ /dev/null @@ -1,125 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cone of Cold -//:: NW_S0_ConeCold -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// Cone of cold creates an area of extreme cold, -// originating at your hand and extending outward -// in a cone. It drains heat, causing 1d6 points of -// cold damage per caster level (maximum 15d6). -*/ -//::////////////////////////////////////////////// -//:: Created By: Noel Borstad -//:: Created On: 10/18/02000 -//::////////////////////////////////////////////// -//:: Last Updated By: Aidan Scanlan On: April 11, 2001 -//:: Update Pass By: Preston W, On: July 25, 2001 - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -float SpellDelay (object oTarget, int nShape); - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nCasterLevel = CasterLvl; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - float fDelay; - location lTargetLocation = PRCGetSpellTargetLocation(); - object oTarget; - //Limit Caster level for the purposes of damage. - if (nCasterLevel > 40) - { - nCasterLevel = 40; - } - - CasterLvl +=SPGetPenetr(); - - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_COLD); - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - // March 2003. Removed this as part of the reputation pass - // if((PRCGetSpellId() == 340 && !GetIsFriend(oTarget)) || PRCGetSpellId() == 25) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CONE_OF_COLD)); - //Get the distance between the target and caster to delay the application of effects - fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20.0; - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay) && (oTarget != OBJECT_SELF)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Detemine damage - nDamage = d6(nCasterLevel); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6 * nCasterLevel;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Adjust damage according to Reflex Save, Evasion or Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD); - - // Apply effects to the currently selected target. - effect eCold = PRCEffectDamage(oTarget, nDamage, EleDmg); - effect eVis = EffectVisualEffect(VFX_IMP_FROST_L); - if(nDamage > 0) - { - //Apply delayed effects - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eCold, oTarget)); - PRCBonusDamage(oTarget); - } - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} - diff --git a/_haks/poa_exp_spells/nw_s0_daze.ncs b/_haks/poa_exp_spells/nw_s0_daze.ncs deleted file mode 100644 index aa05c04d..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_daze.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_daze.nss b/_haks/poa_exp_spells/nw_s0_daze.nss deleted file mode 100644 index ecbd25ff..00000000 --- a/_haks/poa_exp_spells/nw_s0_daze.nss +++ /dev/null @@ -1,140 +0,0 @@ -/*:://///////////////////////////////////////////// -//:: [Daze] -//:: [NW_S0_Daze.nss] -//:: Copyright (c) 2000 Bioware Corp. -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 15, 2001 -//:: Update Pass By: Preston W, On: July 27, 2001 -//:: modified by mr_bumpkin Dec 4, 2003 -//:: modified by xwarren Jul 22, 2010 -//::////////////////////////////////////////////// -//:: -//:: Daze -//:: -//:: Enchantment (Compulsion) [Mind-Affecting] -//:: Level: Brd 0, Sor/Wiz 0 -//:: Components: V, S, M -//:: Casting Time: 1 standard action -//:: Range: Close (25 ft. + 5 ft./2 levels) -//:: Target: One humanoid creature of 4 HD or less -//:: Duration: 1 round -//:: Saving Throw: Will negates -//:: Spell Resistance: Yes -//:: -//:: This enchantment clouds the mind of a humanoid -//:: creature with 4 or fewer Hit Dice so that it -//:: takes no actions. Humanoids of 5 or more HD are -//:: not affected. A dazed subject is not stunned, -//:: so attackers get no special advantage against it. -//:: -//:: Material Component -//:: A pinch of wool or similar substance. -//:: -//::////////////////////////////////////////////// -//:: -//:: Daze Monster -//:: -//:: Enchantment (Compulsion) [Mind-Affecting] -//:: Level: Beguiler 2, Brd 2, Sor/Wiz 2 -//:: Components: V, S, M -//:: Casting Time: 1 standard action -//:: Range: Medium (100 ft. + 10 ft./level) -//:: Target: One living creature of 6 HD or less -//:: Duration: 1 round -//:: Saving Throw: Will negates -//:: Spell Resistance: Yes -//:: -//:: This enchantment clouds the mind of -//:: a living creature with 6 or fewer Hit -//:: Dice so that it takes no actions. Creatures -//:: of 7 or more HD are not affected. A dazed -//:: subject is not stunned, so attackers get no -//:: special advantage against it. -//:: -//:: Material Component -//:: A pinch of wool or similar substance. -//:: -//::////////////////////////////////////////////*/ - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -#include "prc_sp_func" - -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - //Declare major variables - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); - effect eDaze = EffectDazed(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - - effect eLink = EffectLinkEffects(eMind, eDaze); - eLink = EffectLinkEffects(eLink, eDur); - - effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDuration = 2; - //check meta magic for extend - if ((nMetaMagic & METAMAGIC_EXTEND)) - { - nDuration = 4; - } - int nSpellID = GetSpellId(); - int nMaxHD = nSpellID == SPELL_DAZE ? 4+(nCasterLevel/2) : 6+(nCasterLevel/2); - int nPenetr = nCasterLevel + SPGetPenetr(); - - //Make sure the target of Daze spell is a humaniod - if(nSpellID == SPELL_DAZE && PRCAmIAHumanoid(oTarget) != TRUE) - return TRUE; - //Make sure the target of Daze Monster spell is a living creature - if(nSpellID == SPELL_DAZE_MONSTER && PRCGetIsAliveCreature(oTarget) != TRUE) - return TRUE; - if(GetHitDice(oTarget) <= nMaxHD) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpellID)); - //Make SR check - if (!PRCDoResistSpell(oCaster, oTarget,nPenetr)) - { - //Make Will Save to negate effect - if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, oCaster), SAVING_THROW_TYPE_MIND_SPELLS)) - { - //Apply VFX Impact and daze effect - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration),TRUE,-1,nCasterLevel); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } - } - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT); - if (!X2PreSpellCastCode()) return; - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_delfirea.ncs b/_haks/poa_exp_spells/nw_s0_delfirea.ncs deleted file mode 100644 index d820aa33..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_delfirea.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_delfirea.nss b/_haks/poa_exp_spells/nw_s0_delfirea.nss deleted file mode 100644 index a9b2d3b6..00000000 --- a/_haks/poa_exp_spells/nw_s0_delfirea.nss +++ /dev/null @@ -1,97 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Delayed Blast Fireball: On Enter -//:: NW_S0_DelFireA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - The caster creates a trapped area which detects - the entrance of enemy creatures into 3 m area - around the spell location. When tripped it - causes a fiery explosion that does 1d6 per - caster level up to a max of 20d6 damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: July 27, 2001 -//::////////////////////////////////////////////// -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oTarget = GetEnteringObject(); - object oCaster = GetAreaOfEffectCreator(); - location lTarget = GetLocation(OBJECT_SELF); - int nDamage; - int nMetaMagic = PRCGetMetaMagicFeat(); - int CasterLvl = GetLocalInt(OBJECT_SELF, "X2_AoE_Caster_Level"); - - int nCasterLevel = CasterLvl; - //Limit caster level - if (nCasterLevel > 60) - nCasterLevel = 60; - - CasterLvl += SPGetPenetr(); - - int EleDmg = GetLocalInt(OBJECT_SELF, "DelayedBlastFireballDamage"); - int nSaveType = ChangedSaveType(EleDmg); - - effect eDam; - effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL); - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - //Check the faction of the entering object to make sure the entering object is not in the casters faction - if(!GetLocalInt(OBJECT_SELF, "NW_SPELL_DELAY_BLAST_FIREBALL") && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - SetLocalInt(OBJECT_SELF, "NW_SPELL_DELAY_BLAST_FIREBALL",TRUE); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); - //Cycle through the targets in the explosion area - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - while(GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_DELAYED_BLAST_FIREBALL)); - //Make SR check - if (!PRCDoResistSpell(oCaster, oTarget,CasterLvl)) - { - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 6 * nCasterLevel;//Damage is at max - else - nDamage = d6(nCasterLevel); - - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage += nDamage/2;//Damage/Healing is +50% - - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Change damage according to Reflex, Evasion and Improved Evasion - int nDC = PRCGetSaveDC(oTarget, oCaster, -1); - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, nSaveType, GetAreaOfEffectCreator()); - if(nDamage > 0) - { - //Set up the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - - //Apply VFX impact and damage effect - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - DelayCommand(0.01, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - } - } - } - //Get next target in the sequence - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - DestroyObject(OBJECT_SELF, 1.0); - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_destruc.ncs b/_haks/poa_exp_spells/nw_s0_destruc.ncs deleted file mode 100644 index b43485e2..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_destruc.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_destruc.nss b/_haks/poa_exp_spells/nw_s0_destruc.nss deleted file mode 100644 index 4afafc8a..00000000 --- a/_haks/poa_exp_spells/nw_s0_destruc.nss +++ /dev/null @@ -1,101 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Destruction -//:: NW_S0_Destruc -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - The target creature is destroyed if it fails a - Fort save, otherwise it takes 10d6 damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Aug 13, 2001 -//::////////////////////////////////////////////// - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY); - -/* - Spellcast Hook Code - Added 2003-06-23 by GeorgZ - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - effect eDeath = EffectDeath(); - effect eDam; - effect eVis = EffectVisualEffect(234); - - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - CasterLvl +=SPGetPenetr(); - - if(!GetIsReactionTypeFriendly(oTarget) && PRCGetIsAliveCreature(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_DESTRUCTION)); - //Make SR check - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl)) - { - //Make a saving throw check - if(!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF))) - { - DeathlessFrenzyCheck(oTarget); - - //Apply the VFX impact and effects - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - } - else if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - { - // This script does nothing if it has Mettle, bail - return; - } - else - { - nDamage = d6(60); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 360;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - //Set damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } - //Apply VFX impact - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_dismagic.ncs b/_haks/poa_exp_spells/nw_s0_dismagic.ncs deleted file mode 100644 index 06108ff0..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_dismagic.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_dismagic.nss b/_haks/poa_exp_spells/nw_s0_dismagic.nss deleted file mode 100644 index 9325b041..00000000 --- a/_haks/poa_exp_spells/nw_s0_dismagic.nss +++ /dev/null @@ -1,111 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Dispel Magic -//:: NW_S0_DisMagic.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -//:: Attempts to dispel all magic on a targeted -//:: object, or simply the most powerful that it -//:: can on every object in an area if no target -//:: specified. -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 7, 2002 -//:: Updated On: Oct 20, 2003, Georg Zoeller -//::////////////////////////////////////////////// - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "inc_dispel" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION); - - //-------------------------------------------------------------------------- - /* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - */ - //-------------------------------------------------------------------------- - if (!X2PreSpellCastCode()) - { - return; - } - // End of Spell Cast Hook - - effect eVis = EffectVisualEffect(VFX_IMP_BREACH); - effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL); - object oTarget = PRCGetSpellTargetObject(); - location lLocal = PRCGetSpellTargetLocation(); - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - int iTypeDispel = GetLocalInt(GetModule(),"BIODispel"); - - //-------------------------------------------------------------------------- - // Dispel Magic is capped at caster level 10 - //-------------------------------------------------------------------------- - if(nCasterLevel > 10) - { - nCasterLevel = 10; - } - - if (GetIsObjectValid(oTarget)) - { - //---------------------------------------------------------------------- - // Targeted Dispel - Dispel all - //---------------------------------------------------------------------- - if (iTypeDispel) - spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact); - else - spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact); - - } - else - { - //---------------------------------------------------------------------- - // Area of Effect - Only dispel best effect - //---------------------------------------------------------------------- - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation()); - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE ); - while (GetIsObjectValid(oTarget)) - { - if(GetObjectType(oTarget) == OBJECT_TYPE_AREA_OF_EFFECT) - { - //-------------------------------------------------------------- - // Handle Area of Effects - //-------------------------------------------------------------- - if (iTypeDispel) - spellsDispelAoE(oTarget, OBJECT_SELF,nCasterLevel); - else - spellsDispelAoEMod(oTarget, OBJECT_SELF,nCasterLevel); - - } - else if (GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE) - { - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); - } - else - { - - if (iTypeDispel) - spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact, FALSE); - else - spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact, FALSE); - } - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE,lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE); - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} - - - diff --git a/_haks/poa_exp_spells/nw_s0_enedrain.ncs b/_haks/poa_exp_spells/nw_s0_enedrain.ncs deleted file mode 100644 index 9c955a55..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_enedrain.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_enedrain.nss b/_haks/poa_exp_spells/nw_s0_enedrain.nss deleted file mode 100644 index 3bc81689..00000000 --- a/_haks/poa_exp_spells/nw_s0_enedrain.nss +++ /dev/null @@ -1,107 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Energy Drain -//:: NW_S0_EneDrain.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Target loses 2d4 levels. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 7, 2002 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff - -//::Added code to maximize for Faith Healing and Blast Infidel -//::Aaon Graywolf - Jan 7, 2003 - -//::Added hold ray functionality - HackyKid - -#include "prc_sp_func" -#include "prc_inc_function" -#include "prc_add_spell_dc" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nDrain = d4(2); - - effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE); - - //Undead Gain HP from Energy Drain - int nHP = d4(2) + (nPenetr/2); - nHP = nHP + nHP + nHP + nHP +nHP; - effect eHP = EffectTemporaryHitpoints(nHP); - - //Enter Metamagic conditions - int iBlastFaith = BlastInfidelOrFaithHeal(OBJECT_SELF, oTarget, DAMAGE_TYPE_NEGATIVE, TRUE); - if ((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith) - { - nDrain = 8;//Damage is at max - } - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDrain = nDrain + (nDrain/2); //Damage/Healing is +50% - } - effect eDrain = EffectNegativeLevel(nDrain); - eDrain = SupernaturalEffect(eDrain); - - if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, HoursToSeconds(1),TRUE,-1,nCasterLevel); - } - else if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_ENERGY_DRAIN)); - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nPenetr)) - { - - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget,OBJECT_SELF), SAVING_THROW_TYPE_NEGATIVE)) - { - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eDrain, oTarget,0.0f,TRUE,-1,nCasterLevel); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (GetLocalInt(oCaster, PRC_SPELL_HOLD) && GetHasFeat(FEAT_EF_HOLD_RAY, oCaster) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - if (oCaster != oTarget) //cant target self with this spell, only when holding charge - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/nw_s0_enervat.ncs b/_haks/poa_exp_spells/nw_s0_enervat.ncs deleted file mode 100644 index 6041aa88..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_enervat.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_enervat.nss b/_haks/poa_exp_spells/nw_s0_enervat.nss deleted file mode 100644 index e4955882..00000000 --- a/_haks/poa_exp_spells/nw_s0_enervat.nss +++ /dev/null @@ -1,125 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Enervation -//:: NW_S0_Enervat.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Target Loses 1d4 levels for 1 hour per caster - level -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 7, 2002 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff - -//::Added code to maximize for Faith Healing and Blast Infidel -//::Aaon Graywolf - Jan 7, 2003 - - -#include "prc_inc_sp_tch" -#include "prc_inc_function" -#include "prc_sp_func" -#include "prc_add_spell_dc" -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nDrain = d4(); - int nDuration = nCasterLevel; - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE); - - //Undead Gain HP from Enervation - int nHP = ((nCasterLevel/2) * 5); - if (nHP > 125) - { - nHP = 125; - } - - effect eHP = EffectTemporaryHitpoints(nHP); - - //Enter Metamagic conditions - int iBlastFaith = BlastInfidelOrFaithHeal(OBJECT_SELF, oTarget, DAMAGE_TYPE_NEGATIVE, TRUE); - if ((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith) - { - nDrain = 4;//Damage is at max - } - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDrain = nDrain + (nDrain/2); //Damage/Healing is +50% - } - if (nMetaMagic & METAMAGIC_EXTEND) - { - nDuration = nDuration *2; //Duration is +100% - } - - effect eDrain = EffectNegativeLevel(nDrain); - effect eLink = EffectLinkEffects(eDrain, eDur); - - int iAttackRoll = PRCDoRangedTouchAttack(oTarget);; - if(iAttackRoll > 0) - { - if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, HoursToSeconds(1),TRUE,-1,nCasterLevel); - } - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_ENERVATION)); - //Resist magic check - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nPenetr)) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF), SAVING_THROW_TYPE_NEGATIVE)) - { - //Apply the VFX impact and effects - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(nDuration),TRUE,-1,nCasterLevel); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - - ApplyTouchAttackDamage(OBJECT_SELF, oTarget, iAttackRoll, 0, DAMAGE_TYPE_NEGATIVE); - } - } - } - - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (GetLocalInt(oCaster, PRC_SPELL_HOLD) && GetHasFeat(FEAT_EF_HOLD_RAY, oCaster) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - if (oCaster != oTarget) //cant target self with this spell, only when holding charge - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/nw_s0_fireball.ncs b/_haks/poa_exp_spells/nw_s0_fireball.ncs deleted file mode 100644 index 1df29d6b..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_fireball.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_fireball.nss b/_haks/poa_exp_spells/nw_s0_fireball.nss deleted file mode 100644 index 9be118f0..00000000 --- a/_haks/poa_exp_spells/nw_s0_fireball.nss +++ /dev/null @@ -1,96 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Fireball -//:: NW_S0_Fireball -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// A fireball is a burst of flame that detonates with -// a low roar and inflicts 1d6 points of damage per -// caster level (maximum of 10d6) to all creatures -// within the area. Unattended objects also take -// damage. The explosion creates almost no pressure. -*/ -//::////////////////////////////////////////////// -//:: Created By: Noel Borstad -//:: Created On: Oct 18 , 2000 -//::////////////////////////////////////////////// -//:: Last Updated By: Preston Watamaniuk, On: April 6, 2001 -//:: Last Updated By: AidanScanlan, On: April 11, 2001 -//:: Last Updated By: Preston Watamaniuk, On: May 25, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - float fDelay; - effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL); - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - effect eDam; - //Limit Caster level for the purposes of damage - int nDice = PRCMin(20, nCasterLvl); //alterado rafael era 10 mudei para 20 d6 - - nCasterLvl += SPGetPenetr(); - - //Apply the fireball explosion at the location captured above. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_FIREBALL)); - //Get the distance between the explosion and the target to calculate delay - fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - if (!PRCDoResistSpell(oCaster, oTarget, nCasterLvl, fDelay)) - { - //Resolve metamagic - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - nDamage = 6 * nDice; - else - //Roll damage for each target - nDamage = d6(nDice); - if ((nMetaMagic & METAMAGIC_EMPOWER)) - nDamage += nDamage / 2; - - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget, oCaster)), SAVING_THROW_TYPE_FIRE); - if(nDamage > 0) - { - //Set the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - // Apply effects to the currently selected target. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - //This visual effect is applied to the target object not the location as above. This visual effect - //represents the flame that erupts on the target not on the ground. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - PRCSetSchool(); -} - diff --git a/_haks/poa_exp_spells/nw_s0_firestrm.ncs b/_haks/poa_exp_spells/nw_s0_firestrm.ncs deleted file mode 100644 index e7148301..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_firestrm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_firestrm.nss b/_haks/poa_exp_spells/nw_s0_firestrm.nss deleted file mode 100644 index 89a42f30..00000000 --- a/_haks/poa_exp_spells/nw_s0_firestrm.nss +++ /dev/null @@ -1,98 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Fire Storm -//:: NW_S0_FireStm -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creates a zone of destruction around the caster - within which all living creatures are pummeled - with fire. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: April 11, 2001 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 21, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = GetLocation(oCaster); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - int nDamage2; - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE); - - - int nCasterLevel = CasterLvl; - if(nCasterLevel > 60) - { - nCasterLevel = 60; //bugfix, was == 20 - } - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - effect eFireStorm = EffectVisualEffect(VFX_FNF_FIRESTORM); - float fDelay; - CasterLvl +=SPGetPenetr(); - - //Apply Fire and Forget Visual in the area; - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFireStorm, lTarget); - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while(GetIsObjectValid(oTarget)) - { - //This spell smites everyone who is more than 2 meters away from the caster. - //if (GetDistanceBetween(oTarget, OBJECT_SELF) > 2.0) - //{ - if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF) - { - fDelay = PRCGetRandomDelay(1.5, 2.5); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIRE_STORM)); - //Make SR check, and appropriate saving throw(s). - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay)) - { - //Roll Damage - nDamage = d6(nCasterLevel); - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 6 * nCasterLevel;//Damage is at max - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage = nDamage + (nDamage/2);//Damage/Healing is +50% - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Save versus both holy and fire damage - //nDamage2 += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - nDamage2 = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, (nDC), SAVING_THROW_TYPE_DIVINE); - nDamage = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, (nDC), SAVING_THROW_TYPE_FIRE); - if(nDamage) - { - // Apply effects to the currently selected target. For this spell we have used - //both Divine and Fire damage. - effect eDivine = PRCEffectDamage(oTarget, nDamage2, DAMAGE_TYPE_DIVINE); - effect eFire = PRCEffectDamage(oTarget, nDamage, EleDmg); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDivine, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - //} - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_flmstrike.ncs b/_haks/poa_exp_spells/nw_s0_flmstrike.ncs deleted file mode 100644 index 1f52106e..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_flmstrike.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_flmstrike.nss b/_haks/poa_exp_spells/nw_s0_flmstrike.nss deleted file mode 100644 index 2669c89c..00000000 --- a/_haks/poa_exp_spells/nw_s0_flmstrike.nss +++ /dev/null @@ -1,96 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Flame Strike -//:: NW_S0_FlmStrike -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// A flame strike is a vertical column of divine fire -// roaring downward. The spell deals 1d6 points of -// damage per level, to a maximum of 15d6. Half the -// damage is fire damage, but the rest of the damage -// results directly from divine power and is therefore -// not subject to protection from elements (fire), -// fire shield (chill shield), etc. -*/ -//::////////////////////////////////////////////// -//:: Created By: Noel Borstad -//:: Created On: Oct 19, 2000 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 20, 2001 -//:: Update Pass By: Preston W, On: Aug 1, 2001 -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLvl + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE); - int nSaveType = ChangedSaveType(EleDmg); - int nDice = PRCMin(40, nCasterLvl); - - int nDamage, nDamage2; - effect eStrike = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE); - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - effect eHoly, eFire; - - //Apply the location impact visual to the caster location instead of caster target creature. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, lTarget); - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, FALSE, OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE|OBJECT_TYPE_DOOR); - //Cycle through the targets within the spell shape until an invalid object is captured. - while(GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_FLAME_STRIKE)); - - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, 0.6)) - { - nDamage = d6(nDice); - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 6 * nDice; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage = nDamage + (nDamage/2); - - //Adjust the damage based on Reflex Save, Evasion and Improved Evasion - int nDC = PRCGetSaveDC(oTarget, oCaster); - nDamage2 = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, nDC, nSaveType); - - //Make a faction check so that only enemies receieve the full brunt of the damage. - if(!GetIsFriend(oTarget)) - { - nDamage = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, nDC, SAVING_THROW_TYPE_DIVINE); - if(nDamage) - { - eHoly = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); - DelayCommand(0.6, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHoly, oTarget)); - } - } - // Apply effects to the currently selected target. - if(nDamage2) - { - eFire = PRCEffectDamage(oTarget, nDamage2, EleDmg); - DelayCommand(0.6, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget)); - DelayCommand(0.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, FALSE, OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE|OBJECT_TYPE_DOOR); - } - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_grdispel.ncs b/_haks/poa_exp_spells/nw_s0_grdispel.ncs deleted file mode 100644 index 6f75d6a5..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_grdispel.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_grdispel.nss b/_haks/poa_exp_spells/nw_s0_grdispel.nss deleted file mode 100644 index 828e2c3f..00000000 --- a/_haks/poa_exp_spells/nw_s0_grdispel.nss +++ /dev/null @@ -1,95 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Greater Dispelling -//:: NW_S0_GrDispel.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 7, 2002 -//:: Updated On: Oct 20, 2003, Georg Zoeller -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "inc_dispel" - -void main() -{ - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION); - - //-------------------------------------------------------------------------- - /* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - */ - //-------------------------------------------------------------------------- - if (!X2PreSpellCastCode()) - { - return; - } - // End of Spell Cast Hook - - effect eVis = EffectVisualEffect( VFX_IMP_BREACH ); - effect eImpact = EffectVisualEffect( VFX_FNF_DISPEL_GREATER ); - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - object oTarget = PRCGetSpellTargetObject(); - location lLocal = PRCGetSpellTargetLocation(); - int iTypeDispel = GetLocalInt(GetModule(),"BIODispel"); - - //-------------------------------------------------------------------------- - // Greater Dispel Magic is capped at caster level 20 - //-------------------------------------------------------------------------- - if(nCasterLevel >20 ) - { - nCasterLevel = 20; - } - - if (GetIsObjectValid(oTarget)) - { - //---------------------------------------------------------------------- - // Targeted Dispel - Dispel all - //---------------------------------------------------------------------- - if (iTypeDispel) - spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact); - else - spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact); - } - else - { - //---------------------------------------------------------------------- - // Area of Effect - Only dispel best effect - //---------------------------------------------------------------------- - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation()); - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE); - while (GetIsObjectValid(oTarget)) - { - if(GetObjectType(oTarget) == OBJECT_TYPE_AREA_OF_EFFECT) - { - //-------------------------------------------------------------- - // Handle Area of Effects - //-------------------------------------------------------------- - if (iTypeDispel) - spellsDispelAoE(oTarget, OBJECT_SELF,nCasterLevel); - else - spellsDispelAoEMod(oTarget, OBJECT_SELF,nCasterLevel); - - } - else if (GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE) - { - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); - } - else - { - if (iTypeDispel) - spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact, FALSE); - else - spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact, FALSE); - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE,lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE); - } - } -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_hammgods.ncs b/_haks/poa_exp_spells/nw_s0_hammgods.ncs deleted file mode 100644 index a0cb0888..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_hammgods.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_hammgods.nss b/_haks/poa_exp_spells/nw_s0_hammgods.nss deleted file mode 100644 index 0c045da6..00000000 --- a/_haks/poa_exp_spells/nw_s0_hammgods.nss +++ /dev/null @@ -1,130 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Hammer of the Gods -//:: [NW_S0_HammGods.nss] -//:: Copyright (c) 2000 Bioware Corp. -//::////////////////////////////////////////////// -//:: Does 1d8 damage to all enemies within the -//:: spells 20m radius and dazes them if a -//:: Will save is failed. -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 12, 2001 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 21, 2001 -//:: Update Pass By: Preston W, On: Aug 1, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - - - int nCasterLvl = CasterLvl; - int nMetaMagic = PRCGetMetaMagicFeat(); - effect eDam; - effect eDaze = EffectDazed(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - - effect eLink = EffectLinkEffects(eMind, eDaze); - eLink = EffectLinkEffects(eLink, eDur); - - effect eVis = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY); - effect eStrike = EffectVisualEffect(VFX_FNF_STRIKE_HOLY); - float fDelay; - int nDamageDice = nCasterLvl/2; - if(nDamageDice == 0) - { - nDamageDice = 1; - } - //Limit caster level - if (nDamageDice > 40) - { - nDamageDice = 40; - } - int nDamage; - int nPenetr = CasterLvl +SPGetPenetr(); - - //Apply the holy strike VFX - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, PRCGetSpellTargetLocation()); - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation()); - while (GetIsObjectValid(oTarget)) - { - //Make faction checks - if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HAMMER_OF_THE_GODS)); - //Make SR Check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr)) - { - fDelay = PRCGetRandomDelay(0.6, 1.3); - //Roll damage - nDamage = d8(nDamageDice); - //Make metamagic checks - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 8 * nDamageDice; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = FloatToInt( IntToFloat(nDamage) * 1.5 ); - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - - //Make a will save for half damage and negation of daze effect - if (PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (nDC), SAVING_THROW_TYPE_DIVINE, OBJECT_SELF, 0.5)) - { - nDamage = nDamage / 2; - } - else if (GetHasMettle(oTarget, SAVING_THROW_WILL)) // Ignores partial effects - { - nDamage = 0; - } - else - { - //Apply daze effect - DelayCommand(0.5, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(d6()),TRUE,-1,CasterLvl)); - } - //Set damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE ); - //Apply the VFX impact and damage effect - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - //Get next target in shape - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation()); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_healcirc.ncs b/_haks/poa_exp_spells/nw_s0_healcirc.ncs deleted file mode 100644 index d1e80c8f..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_healcirc.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_healcirc.nss b/_haks/poa_exp_spells/nw_s0_healcirc.nss deleted file mode 100644 index 2f3120ee..00000000 --- a/_haks/poa_exp_spells/nw_s0_healcirc.nss +++ /dev/null @@ -1,160 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Healing Circle -//:: NW_S0_HealCirc -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// Positive energy spreads out in all directions -// from the point of origin, curing 1d8 points of -// damage plus 1 point per caster level (maximum +20) -// to nearby living allies. -// -// Like cure spells, healing circle damages undead in -// its area rather than curing them. -*/ -//::////////////////////////////////////////////// -//:: Created By: Noel Borstad -//:: Created On: Oct 18,2000 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 20, 2001 -//:: Update Pass By: Preston W, On: Aug 1, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff - -//::Added code to maximize for Faith Healing and Blast Infidel -//::Aaon Graywolf - Jan 7, 2004 - -#include "prc_inc_function" -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget; - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - - - int nCasterLvl = CasterLvl; - int nDamagen, nModify, nHP; - int nMetaMagic = PRCGetMetaMagicFeat(); - effect eKill; - effect eHeal; - effect eVis = EffectVisualEffect(VFX_IMP_SUNSTRIKE); - effect eVis2 = EffectVisualEffect(VFX_IMP_HEALING_M); - effect eImpact = EffectVisualEffect(VFX_FNF_LOS_HOLY_20); - float fDelay; - //Limit caster level - if (nCasterLvl > 40) - { - nCasterLvl = 40; - } - - CasterLvl +=SPGetPenetr(); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation()); - //Get first target in shape - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, PRCGetSpellTargetLocation()); - while (GetIsObjectValid(oTarget)) - { - fDelay = PRCGetRandomDelay(); - //Check if racial type is undead - if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD - || (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEALING_CIRCLE)); - //Make SR check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - nModify = d8() + nCasterLvl; - //Make metamagic check - int iBlastFaith = BlastInfidelOrFaithHeal(OBJECT_SELF, oTarget, DAMAGE_TYPE_POSITIVE, FALSE); - if ((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith) - { - nModify = 8 + nCasterLvl; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nModify += (nModify/2); //Damage/Healing is +50% - } - if (GetLevelByClass(CLASS_TYPE_HEALER, OBJECT_SELF)) - nModify += GetAbilityModifier(ABILITY_CHARISMA, OBJECT_SELF); - //Make Fort save - if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (nDC), SAVING_THROW_TYPE_NONE, OBJECT_SELF, fDelay)) - { - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - // This script does nothing if it has Mettle, bail - nModify = 0;; - nModify /= 2; - } - //Set damage effect - eKill = PRCEffectDamage(oTarget, nModify, DAMAGE_TYPE_POSITIVE); - //Apply damage effect and VFX impact - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eKill, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - else - { - // * May 2003: Heal Neutrals as well - if(!GetIsReactionTypeHostile(oTarget) || GetFactionEqual(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEALING_CIRCLE, FALSE)); - nHP = d8() + nCasterLvl; - //Enter Metamagic conditions - int iBlastFaith = BlastInfidelOrFaithHeal(OBJECT_SELF, oTarget, DAMAGE_TYPE_POSITIVE, FALSE); - if ((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith) - { - nHP = 8 + nCasterLvl;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nHP = nHP + (nHP/2); //Damage/Healing is +50% - } - //Set healing effect - if (GetLevelByClass(CLASS_TYPE_HEALER, OBJECT_SELF)) - nHP += GetAbilityModifier(ABILITY_CHARISMA, OBJECT_SELF); - eHeal = PRCEffectHeal(nHP, oTarget); - //Apply heal effect and VFX impact - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); - } - } - //Get next target in the shape - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, PRCGetSpellTargetLocation()); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_healharm.ncs b/_haks/poa_exp_spells/nw_s0_healharm.ncs deleted file mode 100644 index ec1ec1c4..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_healharm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_healharm.nss b/_haks/poa_exp_spells/nw_s0_healharm.nss deleted file mode 100644 index 871e2e38..00000000 --- a/_haks/poa_exp_spells/nw_s0_healharm.nss +++ /dev/null @@ -1,194 +0,0 @@ -/* - nw_s0_healharm - - Heal/Harm in the one script - - By: Flaming_Sword - Created: Jun 14, 2006 - Modified: Nov 21, 2006 - - Consolidation of heal/harm scripts - Mass Heal vfx on target looks like heal - added greater harm, mass harm -*/ - -#include "prc_sp_func" -#include "prc_inc_sp_tch" -#include "prc_inc_function" -#include "prc_add_spell_dc" -#include "inc_dispel" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nSpellID) -{ - int bIsHeal = IsHeal(nSpellID); //whether it is a heal or harm spell - int bMass = IsMassHealHarm(nSpellID); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nHealVFX, nHurtVFX, nEnergyType, nDice, iBlastFaith, nHeal; - float fRadius; - string nSwitch; - int nCap = 150 + nCasterLevel; - if(bIsHeal) - { - nHealVFX = VFX_IMP_HEALING_X; - nHurtVFX = VFX_IMP_SUNSTRIKE; - nEnergyType = DAMAGE_TYPE_POSITIVE; - nSwitch = PRC_BIOWARE_HEAL; - fRadius = RADIUS_SIZE_COLOSSAL; - if(nSpellID == SPELL_MASS_HEAL) - { - nSwitch = PRC_BIOWARE_MASS_HEAL; - nCap = 250 + nCasterLevel; - } - } - else - { - nHealVFX = VFX_IMP_HEALING_G; - nHurtVFX = 246; - nEnergyType = DAMAGE_TYPE_NEGATIVE; - nSwitch = PRC_BIOWARE_HARM; - fRadius = RADIUS_SIZE_HUGE; - } - int iHeal; - int iAttackRoll = 1; - if((nSpellID == SPELL_MASS_HARM) || (nSpellID == SPELL_GREATER_HARM)) - { - nDice = (nCasterLevel > 40) ? 40 : nCasterLevel; - nHeal = d12(nDice); - if((nMetaMagic & METAMAGIC_MAXIMIZE) || BlastInfidelOrFaithHeal(oCaster, oTarget, nEnergyType, TRUE)) - nHeal = 12 * nDice; //in case higher level spell slots are available - } - else - { - nHeal = 10 * nCasterLevel; - } - if(nHeal > nCap && !GetPRCSwitch(nSwitch)) - nHeal = nCap; - location lLoc; - if(bMass) - { - lLoc = (nSpellID == SPELL_MASS_HARM) ? GetLocation(oCaster) : PRCGetSpellTargetLocation(); - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRadius, lLoc); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(bIsHeal ? VFX_FNF_LOS_HOLY_30 : VFX_FNF_LOS_EVIL_20), lLoc); - } - float fDelay = 0.0; - - while(GetIsObjectValid(oTarget)) - { - if(bMass) fDelay = PRCGetRandomDelay(); - int iTombTainted = GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD; - - iHeal = GetObjectType(oTarget) == OBJECT_TYPE_CREATURE && - ((!bIsHeal && (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD || iTombTainted)) || - (bIsHeal && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD && !iTombTainted)); - if (GetLocalInt(oTarget, "AcererakHealing")) iHeal = TRUE; - - if(iHeal && (spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, oCaster) || (GetIsDead(oTarget) && (GetCurrentHitPoints(oTarget) > -10)))) - { - SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID, FALSE)); - - //Warforged are only healed for half, none if they have Improved Fortification - if(GetIsWarforged(oTarget)) nHeal /= 2; - if(GetHasFeat(FEAT_IMPROVED_FORTIFICATION, oTarget)) nHeal = 0; - - - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectHeal(nHeal, oTarget), oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nHealVFX), oTarget)); - // Code for FB to remove damage that would be caused at end of Frenzy - SetLocalInt(oTarget, "PC_Damage", 0); - } - else if((GetObjectType(oTarget) != OBJECT_TYPE_CREATURE && !bIsHeal) || - (GetObjectType(oTarget) == OBJECT_TYPE_CREATURE && !iHeal)) - { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oCaster) - { - SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID)); - iAttackRoll = PRCDoMeleeTouchAttack(oTarget); - if(iAttackRoll) - { - if (!PRCDoResistSpell(oCaster, oTarget, nCasterLevel + SPGetPenetr())) - { - int nModify = d4(); - iBlastFaith = BlastInfidelOrFaithHeal(oCaster, oTarget, nEnergyType, TRUE); - if((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith) - { - nModify = 1; - } - if((nSpellID == SPELL_MASS_HARM) || (nSpellID == SPELL_GREATER_HARM)) - { - nHeal = d12(nDice); - if((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith) - nHeal = 12 * nDice; - } - else - { - nHeal = 10 * nCasterLevel; - } - if(nHeal > nCap && !GetPRCSwitch(nSwitch)) - nHeal = nCap; - - if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF))) - { - nHeal /= 2; - if (GetHasMettle(oTarget, SAVING_THROW_WILL)) // Ignores partial effects - nHeal = 0; - } - int nHP = GetCurrentHitPoints(oTarget); - if (nHeal > nHP - nModify) - nHeal = nHP - nModify; - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nHeal, nEnergyType), oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nHurtVFX), oTarget)); - } - } - } - } - if(!bMass) break; - oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRadius, lLoc); - } - //Spell Removal Check - SpellRemovalCheck(oCaster, oTarget); - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - if (DEBUG) DoDebug("nw_s0_healharm running "+IntToString(GetIsPC(OBJECT_SELF))); - int nSpellID = PRCGetSpellId(); - PRCSetSchool(GetSpellSchool(nSpellID)); - - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if(X2PreSpellCastCode()) - { - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (DEBUG )DoDebug("nw_s0_healharm running normal casting"); - if(IsTouchSpell(nSpellID) && GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - if (DEBUG) DoDebug("nw_s0_healharm running returning"); - return; - } - if (DEBUG) DoDebug("nw_s0_healharm running DoSpell"); - DoSpell(oCaster, oTarget, nSpellID); - } - else - { - if (DEBUG) DoDebug("nw_s0_healharm running else casting"); - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nSpellID)) - DecrementSpellCharges(oCaster); - } - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_horrwilt.ncs b/_haks/poa_exp_spells/nw_s0_horrwilt.ncs deleted file mode 100644 index 8cdce906..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_horrwilt.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_horrwilt.nss b/_haks/poa_exp_spells/nw_s0_horrwilt.nss deleted file mode 100644 index f178533f..00000000 --- a/_haks/poa_exp_spells/nw_s0_horrwilt.nss +++ /dev/null @@ -1,121 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Horrid Wilting -//:: NW_S0_HorrWilt -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - All living creatures (not undead or constructs) - suffer 1d8 damage per caster level to a maximum - of 25d8 damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Sept 12 , 2001 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oCaster = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oCaster); - - int CasterLvl = nCasterLvl; - - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - float fDelay; - effect eExplode = EffectVisualEffect(VFX_FNF_HORRID_WILTING); - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eDam; - //Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - //Limit Caster level for the purposes of damage - if (nCasterLvl > 60) - { - nCasterLvl = 60; - } - - CasterLvl +=SPGetPenetr(); - - //Apply the horrid wilting explosion at the location captured above. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget); - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget)) - { - // GZ: Not much fun if the caster is always killing himself - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HORRID_WILTING)); - //Get the distance between the explosion and the target to calculate delay - fDelay = PRCGetRandomDelay(1.5, 2.5); - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay)) - { - if(PRCGetIsAliveCreature(oTarget)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Roll damage for each target - nDamage = d8(nCasterLvl); - //Resolve metamagic - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 8 * nCasterLvl; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + nDamage / 2; - } - if(/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (nDC), SAVING_THROW_TYPE_NONE, OBJECT_SELF, fDelay)) - { - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - // This script does nothing if it has Mettle, bail - nDamage = 0; - nDamage = nDamage/2; - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Set the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL); - // Apply effects to the currently selected target. - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - PRCBonusDamage(oTarget); - //This visual effect is applied to the target object not the location as above. This visual effect - //represents the flame that erupts on the target not on the ground. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget); - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_imprinvis.ncs b/_haks/poa_exp_spells/nw_s0_imprinvis.ncs deleted file mode 100644 index 1748e38f..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_imprinvis.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_imprinvis.nss b/_haks/poa_exp_spells/nw_s0_imprinvis.nss deleted file mode 100644 index fe193826..00000000 --- a/_haks/poa_exp_spells/nw_s0_imprinvis.nss +++ /dev/null @@ -1,90 +0,0 @@ -/* - nw_s0_imprinvis - - Target creature can attack and cast spells while - invisible - - By: Preston Watamaniuk - Created: Jan 7, 2002 - Modified: Jun 12, 2006 -*/ - -void ReapplyInvis(object oTarget, effect eInvis, float fDur, int CasterLvl); - -#include "prc_sp_func" - -void ReapplyInvis(object oTarget, effect eInvis, float fDur, int CasterLvl) -{ - if(!PRCGetHasEffect(EFFECT_TYPE_INVISIBILITY, oTarget) && GetHasSpellEffect(SPELL_IMPROVED_INVISIBILITY)) - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eInvis, oTarget, fDur,TRUE,-1,CasterLvl); - DelayCommand(1.0, ReapplyInvis(oTarget, eInvis, fDur-1.0, CasterLvl)); -} - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int bBio = GetPRCSwitch(PRC_BIOWARE_INVISIBILITY); - float fDur; - effect eImpact = EffectVisualEffect(VFX_IMP_HEAD_MIND); - effect eVis = EffectVisualEffect(VFX_DUR_INVISIBILITY); - effect eInvis = EffectInvisibility(bBio ? INVISIBILITY_TYPE_NORMAL : INVISIBILITY_TYPE_IMPROVED); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eCover = EffectConcealment(25 + (nCasterLevel/10) ); //era 50 diminui para 25 +castrlvl/10 - effect eLink = EffectLinkEffects(eDur, eCover); - eLink = EffectLinkEffects(eLink, eVis); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_IMPROVED_INVISIBILITY, FALSE)); - int CasterLvl = nCasterLevel; - int nDuration = CasterLvl/4; //alterei aqui para metade da duracao - if (GetHasFeat(FEAT_INSIDIOUSMAGIC,OBJECT_SELF) && GetHasFeat(FEAT_SHADOWWEAVE,oTarget)) - nDuration = nDuration*2; - int nMetaMagic = PRCGetMetaMagicFeat(); - //Enter Metamagic conditions - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) - { - nDuration = nDuration *2; //Duration is +100% - } - fDur = bBio ? TurnsToSeconds(nDuration) : RoundsToSeconds(nDuration); - //Apply the VFX impact and effects - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oTarget); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDur,TRUE,-1,CasterLvl); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eInvis, oTarget, fDur,TRUE,-1,CasterLvl); - DelayCommand(1.0, ReapplyInvis(oTarget, eInvis, fDur, CasterLvl)); - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_incclouda.ncs b/_haks/poa_exp_spells/nw_s0_incclouda.ncs deleted file mode 100644 index bc1d8692..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_incclouda.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_incclouda.nss b/_haks/poa_exp_spells/nw_s0_incclouda.nss deleted file mode 100644 index 83e30973..00000000 --- a/_haks/poa_exp_spells/nw_s0_incclouda.nss +++ /dev/null @@ -1,81 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Incendiary Cloud -//:: NW_S0_IncCloud.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Person within the AoE take 4d6 fire damage - per round. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 17, 2001 -//::////////////////////////////////////////////// -//:: March 2003: Removed movement speed penalty - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - effect eDam; - object oTarget; - //Declare and assign personal impact visual effect. - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - // effect eSpeed = EffectMovementSpeedDecrease(50); - effect eVis2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = eVis2; //EffectLinkEffects(eSpeed, eVis2); - float fDelay; - //Capture the first target object in the shape. - oTarget = GetEnteringObject(); - - int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator()); -int CasterLvl = PRCGetCasterLevel(); - - //Declare the spell shape, size and the location. - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_INCENDIARY_CLOUD)); - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr, fDelay)) - { - fDelay = PRCGetRandomDelay(0.5, 2.0); - //Roll damage. - nDamage = d6(CasterLvl); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6 * CasterLvl;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Adjust damage for Reflex Save, Evasion and Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, GetAreaOfEffectCreator(), SPELL_INCENDIARY_CLOUD), SAVING_THROW_TYPE_FIRE, GetAreaOfEffectCreator()); - // Apply effects to the currently selected target. - eDam = PRCEffectDamage(oTarget, nDamage, GetLocalInt(OBJECT_SELF, "IC_Damage")); - if(nDamage > 0) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - // SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eSpeed, oTarget); - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_inccloudc.ncs b/_haks/poa_exp_spells/nw_s0_inccloudc.ncs deleted file mode 100644 index 603c8425..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_inccloudc.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_inccloudc.nss b/_haks/poa_exp_spells/nw_s0_inccloudc.nss deleted file mode 100644 index 73e8fd82..00000000 --- a/_haks/poa_exp_spells/nw_s0_inccloudc.nss +++ /dev/null @@ -1,100 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Incendiary Cloud -//:: NW_S0_IncCloudC.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Objects within the AoE take 4d6 fire damage - per round. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 17, 2001 -//::////////////////////////////////////////////// -//:: Updated By: GeorgZ 2003-08-21: Now affects doors and placeables as well - - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - effect eDam; - object oTarget; - //Declare and assign personal impact visual effect. - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - float fDelay; - //Capture the first target object in the shape. - - //-------------------------------------------------------------------------- - // GZ 2003-Oct-15 - // When the caster is no longer there, all functions calling - // GetAreaOfEffectCreator will fail. Its better to remove the barrier then - //-------------------------------------------------------------------------- - object aoeCreator = GetAreaOfEffectCreator(); - if (!GetIsObjectValid(aoeCreator)) - { - DestroyObject(OBJECT_SELF); - return; - } - - int CasterLvl = PRCGetCasterLevel(aoeCreator); - - int nPenetr = SPGetPenetrAOE(aoeCreator,CasterLvl); - - int EleDmg = GetLocalInt(OBJECT_SELF, "IC_Damage"); - - - oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Declare the spell shape, size and the location. - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoeCreator)) - { - fDelay = PRCGetRandomDelay(0.5, 2.0); - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(aoeCreator, oTarget,nPenetr, fDelay)) - { - SignalEvent(oTarget, EventSpellCastAt(aoeCreator, SPELL_INCENDIARY_CLOUD)); - //Roll damage. - nDamage = d6(CasterLvl); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6 * CasterLvl;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - int nDC = PRCGetSaveDC(oTarget,aoeCreator); - //Adjust damage for Reflex Save, Evasion and Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE, aoeCreator); - // Apply effects to the currently selected target. - eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - if(nDamage > 0) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Select the next target within the spell shape. - oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_lghtnbolt.ncs b/_haks/poa_exp_spells/nw_s0_lghtnbolt.ncs deleted file mode 100644 index bbe9b332..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_lghtnbolt.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_lghtnbolt.nss b/_haks/poa_exp_spells/nw_s0_lghtnbolt.nss deleted file mode 100644 index 9246dd2b..00000000 --- a/_haks/poa_exp_spells/nw_s0_lghtnbolt.nss +++ /dev/null @@ -1,132 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Lightning Bolt -//:: NW_S0_LightnBolt -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Does 1d6 per level in a 5ft tube for 30m -*/ -//::////////////////////////////////////////////// -//:: Created By: Noel Borstad -//:: Created On: March 8, 2001 -//::////////////////////////////////////////////// -//:: Last Updated By: Preston Watamaniuk, On: May 2, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_ELECTRICAL); - - int nCasterLevel = CasterLvl; - //Limit caster level - if (nCasterLevel > 20) // cap era 10 mudei para 20 - { - nCasterLevel = 20; - } - int nDamage; - int nMetaMagic = PRCGetMetaMagicFeat(); - //Set the lightning stream to start at the caster's hands - effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF, BODY_NODE_HAND); - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - effect eDamage; - object oTarget = PRCGetSpellTargetObject(); - location lTarget = GetLocation(oTarget); - object oNextTarget, oTarget2; - float fDelay; - int nCnt = 1; - - CasterLvl +=SPGetPenetr(); - - oTarget2 = GetNearestObject(OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nCnt); - while(GetIsObjectValid(oTarget2) && GetDistanceToObject(oTarget2) <= 30.0) - { - //Get first target in the lightning area by passing in the location of first target and the casters vector (position) - oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, 30.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF)); - while (GetIsObjectValid(oTarget)) - { - //Exclude the caster from the damage effects - if (oTarget != OBJECT_SELF && oTarget2 == oTarget) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_LIGHTNING_BOLT)); - //Make an SR check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Roll damage - nDamage = d6(nCasterLevel); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6 * nCasterLevel;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Adjust damage based on Reflex Save, Evasion and Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ELECTRICITY); - //Set damage effect - eDamage = PRCEffectDamage(oTarget, nDamage, EleDmg); - if(nDamage > 0) - { - fDelay = PRCGetSpellEffectDelay(GetLocation(oTarget), oTarget); - //Apply VFX impcat, damage effect and lightning effect - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oTarget)); - PRCBonusDamage(oTarget); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget)); - } - } - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,1.0,FALSE); - //Set the currect target as the holder of the lightning effect - oNextTarget = oTarget; - eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNextTarget, BODY_NODE_CHEST); - } - } - //Get the next object in the lightning cylinder - oTarget = MyNextObjectInShape(SHAPE_SPELLCYLINDER, 30.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF)); - } - nCnt++; - oTarget2 = GetNearestObject(OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nCnt); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} - diff --git a/_haks/poa_exp_spells/nw_s0_magmiss.ncs b/_haks/poa_exp_spells/nw_s0_magmiss.ncs deleted file mode 100644 index 99175b5d..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_magmiss.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_magmiss.nss b/_haks/poa_exp_spells/nw_s0_magmiss.nss deleted file mode 100644 index b78075fe..00000000 --- a/_haks/poa_exp_spells/nw_s0_magmiss.nss +++ /dev/null @@ -1,109 +0,0 @@ - //:://///////////////////////////////////////////// -//:: Magic Missile -//:: NW_S0_MagMiss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// A missile of magical energy darts forth from your -// fingertip and unerringly strikes its target. The -// missile deals 1d4+1 points of damage. -// -// For every two extra levels of experience past 1st, you -// gain an additional missile. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: April 10, 2001 -//::////////////////////////////////////////////// -//:: Last Updated By: Preston Watamaniuk, On: May 8, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - if (!X2PreSpellCastCode()) - return; - - //Declare major variables ( fDist / (3.0f * log( fDist ) + 2.0f) ) - object oTarget = PRCGetSpellTargetObject(); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nCasterLvl = CasterLvl; - int nDamage = 0; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCnt; - effect eMissile = EffectVisualEffect(VFX_IMP_MIRV); - effect eVis = EffectVisualEffect(VFX_IMP_MAGBLUE); - int nMissiles = (nCasterLvl + 1)/2; - float fDist = GetDistanceBetween(OBJECT_SELF, oTarget); - float fDelay = fDist/(3.0 * log(fDist) + 2.0); - float fDelay2, fTime; - - CasterLvl +=SPGetPenetr(); - int nClass = GetLevelByClass(CLASS_TYPE_FMM); - if (GetIsObjectValid(PRCGetSpellCastItem())) nClass = 0; // The FMM boosts don't apply to wands/scrolls/etc. - if (nClass >= 3) - CasterLvl += 2; - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_MAGIC_MISSILE)); - //Limit missiles to five - if (nMissiles > 20) - nMissiles = 20; - - // Force missile mage adds a bonus missile at 1st and 5th levels - if (nClass) nMissiles++; - if (nClass >= 5) nMissiles++; - if (nClass >= 10) nMissiles++; - if (nClass >= 15) nMissiles++; - if (nClass >= 20) nMissiles++; - if (nClass >= 25) nMissiles++; - if (nClass >= 30) nMissiles++; - if (nClass >= 35) nMissiles++; - if (nClass >= 40) nMissiles++; - if (nClass >= 45) nMissiles++; - if (nClass >= 50) nMissiles++; - if (nClass >= 55) nMissiles++; - if (nClass >= 60) nMissiles++; - //Make SR Check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay)) - { - //Apply a single damage hit for each missile instead of as a single mass - for (nCnt = 1; nCnt <= nMissiles; nCnt++) - { - //Roll damage - int nDam = d4(nMissiles/4) + 1; - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - nDam = 4*(nMissiles/4)+1;//Damage is at max - if ((nMetaMagic & METAMAGIC_EMPOWER)) - nDam = nDam + nDam/2; //Damage/Healing is +50% - - fTime = fDelay; - fDelay2 += 0.1; - fTime += fDelay2; - - //Apply the MIRV and damage effect - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0f,FALSE)); - DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget)); - } - } - else - { - for (nCnt = 1; nCnt <= nMissiles; nCnt++) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget); - } - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} diff --git a/_haks/poa_exp_spells/nw_s0_metswarm.ncs b/_haks/poa_exp_spells/nw_s0_metswarm.ncs deleted file mode 100644 index ebff51c9..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_metswarm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_metswarm.nss b/_haks/poa_exp_spells/nw_s0_metswarm.nss deleted file mode 100644 index 47bde87c..00000000 --- a/_haks/poa_exp_spells/nw_s0_metswarm.nss +++ /dev/null @@ -1,112 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Meteor Swarm -//:: NW_S0_MetSwarm -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Everyone in a 50ft radius around the caster - takes 20d6 fire damage. Those within 6ft of the - caster will take no damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 24 , 2001 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 22, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - CasterLvl +=SPGetPenetr(); - - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE); - - - //Declare major variables - int nMetaMagic; - int nDamage; - effect eFire; - effect eMeteor = EffectVisualEffect(VFX_FNF_METEOR_SWARM); - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - //Apply the meteor swarm VFX area impact - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eMeteor, GetLocation(OBJECT_SELF)); - //Get first object in the spell area - float fDelay; - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF) - { - fDelay = PRCGetRandomDelay(); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_METEOR_SWARM)); - //Make sure the target is outside the 2m safe zone - if (GetDistanceBetween(oTarget, OBJECT_SELF) > 2.0) - { - //Make SR check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, 0.5)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Roll damage - nDamage = d6(CasterLvl); //alterado rafael antes era 20 troquei pelo caster lvl - - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6 * CasterLvl;//Damage is at max //alterado rafael antes era 20 troquei pelo caster lvl - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (nDC),SAVING_THROW_TYPE_FIRE); - //Set the damage effect - eFire = PRCEffectDamage(oTarget, nDamage, EleDmg); - if(nDamage > 0) - { - //Apply damage effect and VFX impact. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget)); - PRCBonusDamage(oTarget); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - } - //Get next target in the spell area - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); - } - - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the local integer storing the spellschool name -} - diff --git a/_haks/poa_exp_spells/nw_s0_phankill.ncs b/_haks/poa_exp_spells/nw_s0_phankill.ncs deleted file mode 100644 index 743aa1f7..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_phankill.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_phankill.nss b/_haks/poa_exp_spells/nw_s0_phankill.nss deleted file mode 100644 index 0abbafeb..00000000 --- a/_haks/poa_exp_spells/nw_s0_phankill.nss +++ /dev/null @@ -1,161 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Phantasmal Killer -//:: NW_S0_PhantKill -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Target of the spell must make 2 saves or die. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Dec 14 , 2001 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 22, 2001 -//:: Update Pass By: Preston W, On: Aug 3, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -int PRCMySavingThrow2(int nSavingThrow, object oTarget, int nDC, int nSaveType=SAVING_THROW_TYPE_NONE, object oSaveVersus = OBJECT_SELF, float fDelay = 0.0); - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ILLUSION); -/* - Spellcast Hook Code - Added 2003-06-23 by GeorgZ - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - int nDamage = d6(7); - int nMetaMagic = PRCGetMetaMagicFeat(); - object oTarget = PRCGetSpellTargetObject(); - effect eDam; - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - effect eVis2 = EffectVisualEffect(VFX_IMP_SONIC); - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_PHANTASMAL_KILLER)); - //Make an SR check - if(!PRCDoResistSpell(OBJECT_SELF, oTarget) && !GetIsImmune(oTarget, IMMUNITY_TYPE_MIND_SPELLS)) - { - //Make a Will save - // Feb 17, 2004 - // !MySavingThrow does not work here, because it does not take into account whether - // the creature is immune to the effect. If immune, it still does the fort save, so - // the target will still take damage or die. To avoid messing with things too much, - // I've made a copy of the function in this script, with an edit to return the proper - // value if the spell was resisted. - //Make a Will save - if (!PRCMySavingThrow2(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF), SAVING_THROW_TYPE_MIND_SPELLS)) - { - // Immunity to fear, makes you immune to Phantasmal Killer. - if ( GetIsImmune( oTarget, IMMUNITY_TYPE_FEAR ) == FALSE ) - { - //Make a Fort save - if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF),SAVING_THROW_TYPE_DEATH)) - { - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - // This script does nothing if it has Mettle, bail - return; - //Check for metamagic - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 42; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = FloatToInt( IntToFloat(nDamage) * 1.5 ); - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - //Set the damage property - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL); - //Apply the damage effect and VFX impact - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); - } - else - { - DeathlessFrenzyCheck(oTarget); - effect eDeath = EffectDeath(); - if(!GetPRCSwitch(PRC_165_DEATH_IMMUNITY)) - eDeath = SupernaturalEffect(eDeath); - //Apply the death effect and VFX impact - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - //SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} - -int PRCMySavingThrow2(int nSavingThrow, object oTarget, int nDC, int nSaveType=SAVING_THROW_TYPE_NONE, object oSaveVersus = OBJECT_SELF, float fDelay = 0.0) -{ - - object oCaster = GetLastSpellCaster(); - int iRW = GetLevelByClass(CLASS_TYPE_RED_WIZARD, oCaster); - int iTK = GetLevelByClass(CLASS_TYPE_THAYAN_KNIGHT, oTarget); - int iRedWizard = GetLevelByClass(CLASS_TYPE_RED_WIZARD, oTarget); - int nSpell = PRCGetSpellId(); - - // Handle the target having Force of Will and being targeted by a psionic power - if(nSavingThrow != SAVING_THROW_WILL && - nSpell > 14000 && nSpell < 14360 && - GetHasFeat(FEAT_FORCE_OF_WILL, oTarget) && - !GetLocalInt(oTarget, "ForceOfWillUsed") && - // Only use will save if it's better - (nSavingThrow == SAVING_THROW_FORT ? GetFortitudeSavingThrow(oTarget) : GetReflexSavingThrow(oTarget)) > GetWillSavingThrow(oTarget) - ) - { - nSavingThrow = SAVING_THROW_WILL; - SetLocalInt(oTarget, "ForceOfWillUsed", TRUE); - DelayCommand(6.0f, DeleteLocalInt(oTarget, "ForceOfWillUsed")); - SendMessageToPC(oTarget, "Force Of Will used"); - } - - if (iRW > 0 && iTK > 0 && nSaveType == SAVING_THROW_TYPE_MIND_SPELLS) - { - return 0; - } - - - //racial pack code - if(nSaveType == SAVING_THROW_TYPE_FIRE && GetHasFeat(FEAT_HARD_FIRE, oTarget) ) - { nDC -= 1+(GetHitDice(oTarget)/5); } - else if(nSaveType == SAVING_THROW_TYPE_COLD && GetHasFeat(FEAT_HARD_WATER, oTarget) ) - { nDC -= 1+(GetHitDice(oTarget)/5); } - else if(nSaveType == SAVING_THROW_TYPE_ELECTRICITY ) - { - if(GetHasFeat(FEAT_HARD_AIR, oTarget)) - nDC -= 1+(GetHitDice(oTarget)/5); - else if(GetHasFeat(FEAT_HARD_ELEC, oTarget)) - nDC -= 2; - } - else if(nSaveType == SAVING_THROW_TYPE_POISON && GetHasFeat(FEAT_POISON_3, oTarget) ) - { nDC -= 3; } - else if(nSaveType == SAVING_THROW_TYPE_ACID && GetHasFeat(FEAT_HARD_EARTH, oTarget) ) - { nDC -= 1+(GetHitDice(oTarget)/5); } - - return BWSavingThrow(nSavingThrow, oTarget, nDC, nSaveType, oSaveVersus, fDelay); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_pwstun.ncs b/_haks/poa_exp_spells/nw_s0_pwstun.ncs deleted file mode 100644 index 47ddfad7..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_pwstun.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_pwstun.nss b/_haks/poa_exp_spells/nw_s0_pwstun.nss deleted file mode 100644 index f339d54f..00000000 --- a/_haks/poa_exp_spells/nw_s0_pwstun.nss +++ /dev/null @@ -1,125 +0,0 @@ -//:://///////////////////////////////////////////// -//:: [Power Word Stun] -//:: [NW_S0_PWStun.nss] -//:: Copyright (c) 2000 Bioware Corp. -//::////////////////////////////////////////////// -/* - The creature is stunned for a certain number of - rounds depending on its HP. No save. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Feb 4, 2001 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 22, 2001 - -/* -bugfix by Kovi 2002.07.28 -- =151HP stunned for 4d4 rounds -- >151HP sometimes stunned for indefinit duration -*/ - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" - - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_DIVINATION); -/* - Spellcast Hook Code - Added 2003-06-23 by GeorgZ - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - object oTarget = PRCGetSpellTargetObject(); - int nHP = GetCurrentHitPoints(oTarget); - effect eStun = EffectStunned(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eLink = EffectLinkEffects(eMind, eStun); - effect eVis = EffectVisualEffect(VFX_IMP_STUN); - effect eWord = EffectVisualEffect(VFX_FNF_PWSTUN); - int nDuration; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nMeta; - //Apply the VFX impact - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eWord, PRCGetSpellTargetLocation()); - //Determine the number rounds the creature will be stunned - if (nHP >= 201) - { - nDuration = 1; - nMeta = 1; - } - else if (nHP >= 151 && nHP <= 200) - { - nDuration = d2(1); - nMeta = 2; - } - else if (nHP >= 101 && nHP <= 150) - { - nDuration = d4(1); - nMeta = 4; - } - else if (nHP >= 51 && nHP <= 100) - { - nDuration = d4(2); - nMeta = 8; - } - else - { - nDuration = d4(4); - nMeta = 16; - } - - //Enter Metamagic conditions - if (CheckMetaMagic(nMetaMagic, METAMAGIC_MAXIMIZE)) - { - nDuration = nMeta;//Damage is at max - } - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EMPOWER)) - { - nDuration = nDuration + (nDuration/2); //Damage/Healing is +50% - } - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) - { - nDuration = nDuration * 2; //Duration is +100% - } - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_POWER_WORD_STUN)); - //Make an SR check - if(!PRCDoResistSpell(OBJECT_SELF, oTarget)) - { - if (nDuration>0) - { - //Apply linked effect and the VFX impact - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl); - } - } - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} - diff --git a/_haks/poa_exp_spells/nw_s0_rayfrost.ncs b/_haks/poa_exp_spells/nw_s0_rayfrost.ncs deleted file mode 100644 index 19adc58d..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_rayfrost.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_rayfrost.nss b/_haks/poa_exp_spells/nw_s0_rayfrost.nss deleted file mode 100644 index 5dd1a2a6..00000000 --- a/_haks/poa_exp_spells/nw_s0_rayfrost.nss +++ /dev/null @@ -1,99 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Ray of Frost -//:: [NW_S0_RayFrost.nss] -//:: Copyright (c) 2000 Bioware Corp. -//:://///////////////////////////////////////////// -/* -Evocation [Cold] -Level: Sor/Wiz 0 -Components: V, S -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Effect: Ray -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -A ray of freezing air and ice projects from your -pointing finger. You must succeed on a ranged -touch attack with the ray to deal damage to a -target. The ray deals 1d3 points of cold damage. - -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: feb 4, 2001 -//::////////////////////////////////////////////// -//:: Bug Fix: Andrew Nobbs, April 17, 2003 -//:: Notes: Took out ranged attack roll. -//::////////////////////////////////////////////// -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -//:: added hold ray functionality - HackyKid - -#include "prc_inc_sp_tch" -#include "prc_sp_func" - -int DoSpell(object oCaster, object oTarget, int nCasterLevel) -{ - //Declare major variables - int nPenetr = nCasterLevel + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_COLD); - int iAttackRoll = 0;//placeholder - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_RAY_OF_FROST)); - - iAttackRoll = PRCDoRangedTouchAttack(oTarget); - if(iAttackRoll > 0) - { - //Make SR Check - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - int nDamage = PRCMaximizeOrEmpower(nPenetr, 1, nMetaMagic); //alterei o 3 para nPenetr - - //Apply the VFX impact and damage effect - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - // perform ranged touch attack and apply sneak attack if any exists - ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDamage, EleDmg); - PRCBonusDamage(oTarget); - } - } - effect eRay = EffectBeam(VFX_BEAM_COLD, oCaster, BODY_NODE_HAND, !iAttackRoll); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7, FALSE); - } - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - if (!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (GetLocalInt(oCaster, PRC_SPELL_HOLD) && GetHasFeat(FEAT_EF_HOLD_RAY, oCaster) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - if (oCaster != oTarget) //cant target self with this spell, only when holding charge - DoSpell(oCaster, oTarget, nCasterLevel); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/nw_s0_regen.ncs b/_haks/poa_exp_spells/nw_s0_regen.ncs deleted file mode 100644 index b70e36fd..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_regen.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_regen.nss b/_haks/poa_exp_spells/nw_s0_regen.nss deleted file mode 100644 index 5f49ece3..00000000 --- a/_haks/poa_exp_spells/nw_s0_regen.nss +++ /dev/null @@ -1,78 +0,0 @@ -/* - nw_s0_regen - - Grants the selected target 6 HP of regeneration - every round. - - By: Preston Watamaniuk - Created: Oct 22, 2001 - Modified: Jun 16, 2006 -*/ - -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nDur = PRCGetCasterLevel(OBJECT_SELF); - effect eRegen = EffectRegenerate(6 + (nDur/2), 6.0); - effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eLink = EffectLinkEffects(eRegen, eDur); - int nMeta = PRCGetMetaMagicFeat(); - - //Meta-Magic Checks - if (nMeta & METAMAGIC_EXTEND) - nDur *= 2; - - PRCRemoveEffectsFromSpell(oTarget, SPELL_REGENERATE); - - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_REGENERATE, FALSE)); - //Apply effects and VFX - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDur),TRUE,-1,nCasterLevel); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - //Regrow fingers - if(GetPersistantLocalInt(OBJECT_SELF, "FINGERS_LEFT_HAND")) - { - SetPersistantLocalInt(OBJECT_SELF, "FINGERS_LEFT_HAND", 6); - SetPersistantLocalInt(OBJECT_SELF, "FINGERS_RIGHT_HAND", 6); - DeletePersistantLocalInt(OBJECT_SELF, "LEFT_HAND_USELESS"); - DeletePersistantLocalInt(OBJECT_SELF, "RIGHT_HAND_USELESS"); - } - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_sanctuary.ncs b/_haks/poa_exp_spells/nw_s0_sanctuary.ncs deleted file mode 100644 index 8bb0b159..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_sanctuary.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_sanctuary.nss b/_haks/poa_exp_spells/nw_s0_sanctuary.nss deleted file mode 100644 index 8dd9f0f1..00000000 --- a/_haks/poa_exp_spells/nw_s0_sanctuary.nss +++ /dev/null @@ -1,109 +0,0 @@ -/* - nw_s0_sanctuary - - Makes the target creature invisible to hostile - creatures unless they make a Will Save to ignore - the Sanctuary Effect - - By: Preston Watamaniuk - Created: Jan 7, 2002 - Modified: Jun 29, 2006 - - Flaming_Sword: added greater sanctuary - cleaned up -*/ - -#include "prc_sp_func" -#include "prc_inc_teleport" -#include "prc_add_spell_dc" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nSpellID = PRCGetSpellId(); - int bSanc = (nSpellID == SPELL_SANCTUARY); - effect eSanc = bSanc ? EffectSanctuary((PRCGetSaveDC(oTarget,oCaster))) : EffectEthereal(); - effect eLink = EffectLinkEffects(EffectVisualEffect(VFX_DUR_SANCTUARY), eSanc); - eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - float fDuration = bSanc ? RoundsToSeconds(1+(nCasterLevel/10)) : TurnsToSeconds(1+(nCasterLevel/10)); - int nMetaMagic = PRCGetMetaMagicFeat(); - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) - fDuration *= 2; //Duration is +100% - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpellID, FALSE)); - if(bSanc || GetCanTeleport(oTarget, GetLocation(oTarget), FALSE, TRUE)) - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration,TRUE,-1,nCasterLevel); - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - //teste cooldown - //Spell Time Lock duration (in seconds, use float values) - float iLockTimer = 240.0; - //Defining time variables - float f120togo = ( 120 - iLockTimer ) * -1; - float f60togo = ( 60 - iLockTimer ) * -1; - float f10togo = ( 10 - iLockTimer ) * -1; - - //Checking spell's caster - object oTarget = PRCGetSpellTargetObject(); - //Checking if he used GS recently - int iTimer = GetLocalInt(oTarget, "GSTimer"); - - - - -if (iTimer == 0) //teste - { - SetLocalInt(oTarget, "GSTimer", 1); - //Change: Checking target's area - object oArea = GetArea(oTarget); - - - - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - //object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); - - - SendMessageToAllDMs("Player "+ObjectToString(oCaster)+" has just cast Greater Sanctuary. He is currently in "+ObjectToString(oArea)+"."); - SendMessageToPC(oTarget, "Greater Sanctuary has a timer of "+FloatToString(iLockTimer, 3, 1)+" seconds. You may not use GS again for this period of time. Attempting to do so will spend the spell while producing no effect."); - DelayCommand(f120togo, SendMessageToPC(oTarget, "You have two minutes left on your Greater Sanctuary Lock Timer.")); - DelayCommand(f60togo, SendMessageToPC(oTarget, "You have one minute left on your Greater Sanctuary Lock Timer.")); - DelayCommand(f10togo, SendMessageToPC(oTarget, "You have 10 seconds left on your Greater Sanctuary Lock Timer.")); - DelayCommand(iLockTimer, SendMessageToPC(oTarget, "Greater Sanctuary is once again available for use.")); - DelayCommand(iLockTimer, SetLocalInt(oTarget, "GSTimer", 0)); - } - else - { - SendMessageToPC(oTarget, "You have used Greater Sanctuary too recently, the effect has been cancelled"); - } - -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_searlght.ncs b/_haks/poa_exp_spells/nw_s0_searlght.ncs deleted file mode 100644 index bd717489..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_searlght.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_searlght.nss b/_haks/poa_exp_spells/nw_s0_searlght.nss deleted file mode 100644 index 13fc472d..00000000 --- a/_haks/poa_exp_spells/nw_s0_searlght.nss +++ /dev/null @@ -1,139 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Searing Light -//:: s_SearLght.nss -//:: Copyright (c) 2000 Bioware Corp. -//::////////////////////////////////////////////// -//:: Focusing holy power like a ray of the sun, you project -//:: a blast of light from your open palm. You must succeed -//:: at a ranged touch attack to strike your target. A creature -//:: struck by this ray of light suffers 1d8 points of damage -//:: per two caster levels (maximum 5d8). Undead creatures suffer -//:: 1d6 points of damage per caster level (maximum 10d6), and -//:: undead creatures particularly vulnerable to sunlight, such -//:: as vampires, suffer 1d8 points of damage per caster level -//:: (maximum 10d8). Constructs and inanimate objects suffer only -//:: 1d6 points of damage per two caster levels (maximum 5d6). -//::////////////////////////////////////////////// -//:: Created By: Keith Soleski -//:: Created On: 02/05/2001 -//::////////////////////////////////////////////// -//:: VFX Pass By: Preston W, On: June 25, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff - -//:: Added hold ray functionality - HackyKid - -#include "prc_sp_func" -#include "prc_add_spell_dc" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nDamage; - int nMax; - effect eDam; - effect eVis = EffectVisualEffect(VFX_IMP_SUNSTRIKE); - effect eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND); - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SEARING_LIGHT)); - eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND); - //Make an SR Check - if (!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - //Limit caster level - if (nCasterLevel > 20) - { - nCasterLevel = 20; - } - //Check for racial type undead - if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - nDamage = d8(nCasterLevel); - nMax = 8; - } - //Check for racial type construct - else if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_CONSTRUCT) - { - nCasterLevel /= 2; - if(nCasterLevel == 0) - { - nCasterLevel = 1; - } - nDamage = d6(nCasterLevel); - nMax = 6; - } - else - { - nCasterLevel = nCasterLevel/2; - if(nCasterLevel == 0) - { - nCasterLevel = 1; - } - nDamage = d8(nCasterLevel); - nMax = 8; - } - - //Make metamagic checks - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = nMax * nCasterLevel; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); - } - - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Set the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); - //Apply the damage effect and VFX impact - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - DelayCommand(0.5, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - //SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.0); - } - } - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7,FALSE); - - return !GetIsReactionTypeFriendly(oTarget); //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (GetLocalInt(oCaster, PRC_SPELL_HOLD) && GetHasFeat(FEAT_EF_HOLD_RAY, oCaster) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - if (oCaster != oTarget) //cant target self with this spell, only when holding charge - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} - diff --git a/_haks/poa_exp_spells/nw_s0_shadshld.ncs b/_haks/poa_exp_spells/nw_s0_shadshld.ncs deleted file mode 100644 index 2f7f9dcb..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_shadshld.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_shadshld.nss b/_haks/poa_exp_spells/nw_s0_shadshld.nss deleted file mode 100644 index f7f3c7ce..00000000 --- a/_haks/poa_exp_spells/nw_s0_shadshld.nss +++ /dev/null @@ -1,81 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Shadow Shield -//:: NW_S0_ShadShld.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Grants the caster +5 AC and 10 / +3 Damage - Reduction and immunity to death effects - and negative energy damage for 3 Turns per level. - Makes the caster immune Necromancy Spells - -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 22, 2001 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ILLUSION); -/* - Spellcast Hook Code - Added 2003-06-23 by GeorgZ - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nDuration = CasterLvl; - int nMetaMagic = PRCGetMetaMagicFeat(); - //Do metamagic extend check - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) - { - nDuration *= 2; //Duration is +100% - } - effect eStone = EffectDamageReduction(CasterLvl, DAMAGE_POWER_PLUS_THREE); - effect eAC = EffectACIncrease(5, AC_NATURAL_BONUS); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH_WARD); - effect eShadow = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR); - effect eSpell = EffectSpellLevelAbsorption(9, 0, SPELL_SCHOOL_NECROMANCY); - effect eImmDeath = EffectImmunity(IMMUNITY_TYPE_DEATH); - effect eImmNeg = EffectDamageImmunityIncrease(DAMAGE_TYPE_NEGATIVE, 100); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - - //Link major effects - effect eLink = EffectLinkEffects(eStone, eAC); - eLink = EffectLinkEffects(eLink, eVis); - eLink = EffectLinkEffects(eLink, eShadow); - eLink = EffectLinkEffects(eLink, eImmDeath); - eLink = EffectLinkEffects(eLink, eImmNeg); - eLink = EffectLinkEffects(eLink, eDur); - eLink = EffectLinkEffects(eLink, eSpell); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SHADOW_SHIELD, FALSE)); - //Apply linked effect - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(nDuration),TRUE,-1,CasterLvl); - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} - diff --git a/_haks/poa_exp_spells/nw_s0_sleep.ncs b/_haks/poa_exp_spells/nw_s0_sleep.ncs deleted file mode 100644 index a97fa5f5..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_sleep.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_sleep.nss b/_haks/poa_exp_spells/nw_s0_sleep.nss deleted file mode 100644 index 221f3731..00000000 --- a/_haks/poa_exp_spells/nw_s0_sleep.nss +++ /dev/null @@ -1,172 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Sleep -//:: NW_S0_Sleep -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Goes through the area and sleeps the lowest 4+d4 - HD of creatures first. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: March 7 , 2001 -//::////////////////////////////////////////////// -//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001 -//:: VFX Pass By: Preston W, On: June 25, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ENCHANTMENT); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget; - object oLowest; - effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20); - effect eSleep = EffectSleep(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVis = EffectVisualEffect(VFX_IMP_SLEEP); - - effect eLink = EffectLinkEffects(eSleep, eMind); - eLink = EffectLinkEffects(eLink, eDur); - - // * Moved the linking for the ZZZZs into the later code - // * so that they won't appear if creature immune - - int bContinueLoop; - int nHD = 1 + d20(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCurrentHD; - int bAlreadyAffected; - int nMax = 21;// maximun hd creature affected - int nLow; - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - - int nDuration = CasterLvl; - int nScaledDuration; - nDuration = 3 + nDuration; - int nPenetr = CasterLvl + SPGetPenetr(); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation()); - string sSpellLocal = "BIOWARE_SPELL_LOCAL_SLEEP_" + ObjectToString(OBJECT_SELF); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nHD = 21;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nHD = nHD + (nHD/2); //Damage/Healing is +50% - } - if ((nMetaMagic & METAMAGIC_EXTEND)) - { - nDuration = nDuration *2; //Duration is +100% - } - nDuration += 2; - //Get the first target in the spell area - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation()); - //If no valid targets exists ignore the loop - if (GetIsObjectValid(oTarget)) - { - bContinueLoop = TRUE; - } - // The above checks to see if there is at least one valid target. - while ((nHD > 0) && (bContinueLoop)) - { - nLow = nMax; - bContinueLoop = FALSE; - //Get the first creature in the spell area - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation()); - while (GetIsObjectValid(oTarget)) - { - //Make faction check to ignore allies - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) - && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT - && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) - { - //Get the local variable off the target and determined if the spell has already checked them. - bAlreadyAffected = GetLocalInt(oTarget, sSpellLocal); - if (!bAlreadyAffected) - { - //Get the current HD of the target creature - nCurrentHD = GetHitDice(oTarget); - //Check to see if the HD are lower than the current Lowest HD stored and that the - //HD of the monster are lower than the number of HD left to use up. - if(nCurrentHD < nLow - && nCurrentHD <= nHD - && (nCurrentHD < 2 || GetPRCSwitch(PRC_SLEEP_NO_HD_CAP))) - { - nLow = nCurrentHD; - oLowest = oTarget; - bContinueLoop = TRUE; - } - } - } - //Get the next target in the shape - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, PRCGetSpellTargetLocation()); - } - //Check to see if oLowest returned a valid object - if(oLowest != OBJECT_INVALID) - { - //Fire cast spell at event for the specified target - SignalEvent(oLowest, EventSpellCastAt(OBJECT_SELF, SPELL_SLEEP)); - //Make SR check - if (!PRCDoResistSpell(OBJECT_SELF, oLowest,nPenetr)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Make Fort save - if(!PRCMySavingThrow(SAVING_THROW_WILL, oLowest, (nDC), SAVING_THROW_TYPE_MIND_SPELLS)) - { - //SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oLowest); - if (GetIsImmune(oLowest, IMMUNITY_TYPE_SLEEP) == FALSE) - { - effect eLink2 = EffectLinkEffects(eLink, eVis); - nScaledDuration = PRCGetScaledDuration(nDuration, oLowest); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink2, oLowest, RoundsToSeconds(nScaledDuration)); - } - else - // * even though I am immune apply just the sleep effect for the immunity message - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, oLowest, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl); - } - - } - } - } - //Set a local int to make sure the creature is not used twice in the pass. Destroy that variable in - //.3 seconds to remove it from the creature - SetLocalInt(oLowest, sSpellLocal, TRUE); - DelayCommand(0.5, SetLocalInt(oLowest, sSpellLocal, FALSE)); - DelayCommand(0.5, DeleteLocalInt(oLowest, sSpellLocal)); - //Remove the HD of the creature from the total - nHD = nHD - GetHitDice(oLowest); - oLowest = OBJECT_INVALID; - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/nw_s0_sndburst.ncs b/_haks/poa_exp_spells/nw_s0_sndburst.ncs deleted file mode 100644 index ff44d056..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_sndburst.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_sndburst.nss b/_haks/poa_exp_spells/nw_s0_sndburst.nss deleted file mode 100644 index 61c04d3a..00000000 --- a/_haks/poa_exp_spells/nw_s0_sndburst.nss +++ /dev/null @@ -1,104 +0,0 @@ -//:://///////////////////////////////////////////// -//:: [Sound Burst] -//:: [NW_S0_SndBurst.nss] -//:: Copyright (c) 2000 Bioware Corp. -//::////////////////////////////////////////////// -/* -Evocation [Sonic] -Level: Brd 2, Clr 2 -Components: V, S, F/DF -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Area: 10-ft.-radius spread -Duration: Instantaneous -Saving Throw: Fortitude partial -Spell Resistance: Yes - -You blast an area with a tremendous cacophony. -Every creature in the area takes 1d8 points of -sonic damage and must succeed on a Fortitude save -to avoid being stunned for 1 round. - -Creatures that cannot hear are not stunned but -are still damaged. - -Arcane Focus -A musical instrument. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 31, 2001 -//::////////////////////////////////////////////// -//:: Last Updated By: Georg Z, Oct. 2003 -//:: modified by mr_bumpkin Dec 4, 2003 - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lLoc = PRCGetSpellTargetLocation(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_SONIC); - int nSaveType = ChangedSaveType(EleDmg); - - effect eFNF = EffectVisualEffect(VFX_FNF_SOUND_BURST); - effect eVis = EffectVisualEffect(VFX_IMP_SONIC); - - effect eStun = EffectStunned(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eStun, eMind); - eLink = EffectLinkEffects(eLink, eDur); - - //Apply the FNF to the spell location - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, lLoc); - - //Get the first target in the spell area - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lLoc); - while(GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_SOUND_BURST)); - //Make a SR check - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - // Should not work on creatures already deafened or silenced - if(!PRCGetHasEffect(EFFECT_TYPE_DEAF, oTarget) && !PRCGetHasEffect(EFFECT_TYPE_SILENCE, oTarget)) - { - int nDC = PRCGetSaveDC(oTarget, oCaster); - //Make a Fortitude roll to avoid being stunned - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, nSaveType)) - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2), TRUE, SPELL_SOUND_BURST, nCasterLevel); - } - - //Roll damage - int nDamage = d8() +(nPenetr/4) ; - //Make meta magic checks - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 8 +(nPenetr/4) ; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage += nDamage / 2; - - //Set the damage effect - effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - //Apply the VFX impact and damage effect - DelayCommand(0.01, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - //Get the next target in the spell area - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lLoc); - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/nw_s0_spmantle.ncs b/_haks/poa_exp_spells/nw_s0_spmantle.ncs deleted file mode 100644 index 8460df8e..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_spmantle.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_spmantle.nss b/_haks/poa_exp_spells/nw_s0_spmantle.nss deleted file mode 100644 index 9212a935..00000000 --- a/_haks/poa_exp_spells/nw_s0_spmantle.nss +++ /dev/null @@ -1,78 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Spell Turning -//:: NW_S0_SpTurn.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Absorbes 1d8 + 8 spell levels before disapearing. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 7, 2002 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION); -/* - Spellcast Hook Code - Added 2003-06-23 by GeorgZ - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - effect eVis = EffectVisualEffect(VFX_DUR_SPELLTURNING); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nDuration = CasterLvl; - int nAbsorb = d8() + 8; - int nMetaMagic = PRCGetMetaMagicFeat(); - - PRCRemoveEffectsFromSpell(oTarget, GetSpellId()); - PRCRemoveEffectsFromSpell(oTarget, SPELL_LESSER_SPELL_MANTLE); - PRCRemoveEffectsFromSpell(oTarget, SPELL_GREATER_SPELL_MANTLE); - - //Enter Metamagic conditions - if (CheckMetaMagic(nMetaMagic, METAMAGIC_MAXIMIZE)) - { - nAbsorb = 16;//Damage is at max - } - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EMPOWER)) - { - nAbsorb = nAbsorb + (nAbsorb/2); //Damage/Healing is +50% - } - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) - { - nDuration = nDuration *2; //Duration is +100% - } - //Link Effects - effect eAbsob = EffectSpellLevelAbsorption(9, nAbsorb); - effect eLink = EffectLinkEffects(eVis, eAbsob); - eLink = EffectLinkEffects(eLink, eDur); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SPELL_MANTLE, FALSE)); - - //Apply the VFX impact and effects - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl); - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} - - diff --git a/_haks/poa_exp_spells/nw_s0_stormvenc.ncs b/_haks/poa_exp_spells/nw_s0_stormvenc.ncs deleted file mode 100644 index b432d978..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_stormvenc.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_stormvenc.nss b/_haks/poa_exp_spells/nw_s0_stormvenc.nss deleted file mode 100644 index 2a436115..00000000 --- a/_haks/poa_exp_spells/nw_s0_stormvenc.nss +++ /dev/null @@ -1,100 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Storm of Vengeance: Heartbeat -//:: NW_S0_StormVenC.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creates an AOE that decimates the enemies of - the cleric over a 30ft radius around the caster -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Nov 8, 2001 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 -//:: Elemental Damage note: Only made the lightning aspect variable, the acid aspect is always acid. -//:: the Lightning part seemed like the better of the 2 to go with because it accounts for more -//:: of the total damage than the acid does. - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); - - //Declare major variables - effect eStun = EffectStunned(); - effect eVisAcid = EffectVisualEffect(VFX_IMP_ACID_S); - effect eVisElec = EffectVisualEffect(VFX_IMP_LIGHTNING_M); - effect eVisStun = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eStun, eVisStun); - eLink = EffectLinkEffects(eLink, eDur); - float fDelay; - - int CasterLvl = PRCGetCasterLevel(GetAreaOfEffectCreator()); - int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator(),CasterLvl); - - - - //Get first target in spell area - object oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE); - while(GetIsObjectValid(oTarget)) - { - int nDamage = d6(CasterLvl) + ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - effect eElec = PRCEffectDamage(oTarget, nDamage, ChangedElementalDamage(GetAreaOfEffectCreator(), DAMAGE_TYPE_ELECTRICAL)); - - if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELL_STORM_OF_VENGEANCE)); - //Make an SR Check - fDelay = PRCGetRandomDelay(0.5, 2.0); - if(PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr, fDelay) == 0) - { - int nDC = PRCGetSaveDC(oTarget,GetAreaOfEffectCreator()); - int nAcid = d6(CasterLvl/2); - // Acid Sheath adds +1 damage per die to acid descriptor spells - if (GetHasDescriptor(SPELL_STORM_OF_VENGEANCE, DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, GetAreaOfEffectCreator())) - nAcid += 3; - effect eAcid = PRCEffectDamage(oTarget, nAcid, DAMAGE_TYPE_ACID); - - //Make a saving throw check - // * if the saving throw is made they still suffer acid damage. - // * if they fail the saving throw, they suffer Electrical damage too - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, (nDC), SAVING_THROW_TYPE_ELECTRICITY, GetAreaOfEffectCreator(), fDelay)) - { - //Apply the VFX impact and effects - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisAcid, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eAcid, oTarget)); - if (d2()==1) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisElec, oTarget)); - } - } - else - { - //Apply the VFX impact and effects - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisAcid, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eAcid, oTarget)); - //Apply the VFX impact and effects - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisElec, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eElec, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2))); - } - } - } - //Get next target in spell area - oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/nw_s0_sunbeam.ncs b/_haks/poa_exp_spells/nw_s0_sunbeam.ncs deleted file mode 100644 index 6e6ab468..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_sunbeam.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_sunbeam.nss b/_haks/poa_exp_spells/nw_s0_sunbeam.nss deleted file mode 100644 index 99a459bf..00000000 --- a/_haks/poa_exp_spells/nw_s0_sunbeam.nss +++ /dev/null @@ -1,147 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Sunbeam -//:: s_Sunbeam.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -//:: All creatures in the beam are struck blind and suffer 4d6 points of damage. (A successful -//:: Reflex save negates the blindness and reduces the damage by half.) Creatures to whom sunlight -//:: is harmful or unnatural suffer double damage. -//:: -//:: Undead creatures caught within the ray are dealt 1d6 points of damage per caster level -//:: (maximum 20d6), or half damage if a Reflex save is successful. In addition, the ray results in -//:: the total destruction of undead creatures specifically affected by sunlight if they fail their saves. -//::////////////////////////////////////////////// -//:: Created By: Keith Soleski -//:: Created On: Feb 22, 2001 -//::////////////////////////////////////////////// -//:: Last Modified By: Keith Soleski, On: March 21, 2001 -//:: VFX Pass By: Preston W, On: June 25, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE); - effect eStrike = EffectVisualEffect(VFX_FNF_SUNBEAM); - effect eDam; - effect eBlind = EffectBlindness(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eBlind, eDur); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nDamage; - int nOrgDam; - int nMax; - float fDelay; - int nBlindLength = 3; - - - int nPenetr = CasterLvl + SPGetPenetr(); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, PRCGetSpellTargetLocation()); - //Get the first target in the spell area - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, PRCGetSpellTargetLocation()); - while(GetIsObjectValid(oTarget)) - { - - int nCasterLevel= CasterLvl; - //Limit caster level - if (nCasterLevel > 60) - { - nCasterLevel = 60; - } - - // Make a faction check - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - fDelay = PRCGetRandomDelay(1.0, 2.0); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SUNBEAM)); - //Make an SR check - if ( ! PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr, 1.0)) - { - //Check if the target is an undead - if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - //Roll damage and save - nDamage = d6(nCasterLevel); - nMax = 360; - } - else - { - //Roll damage and save - nDamage = d6(nCasterLevel/3); - nOrgDam = nDamage; - nMax = 160; - nCasterLevel = 3; - //Get the adjusted damage due to Reflex Save, Evasion or Improved Evasion - } - - //Do metamagic checks - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = nMax * nCasterLevel; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); - } - - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - - //Check that a reflex save was made. - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, (nDC), SAVING_THROW_TYPE_DIVINE, OBJECT_SELF, 1.0) == 0) - { - DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nBlindLength),TRUE,-1,CasterLvl)); - } - else - { - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, 0, SAVING_THROW_TYPE_DIVINE); - } - //Set damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); - if(nDamage > 0) - { - //Apply the damage effect and VFX impact - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - } - } - } - //Get the next target in the spell area - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, PRCGetSpellTargetLocation()); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/nw_s0_vamptch.ncs b/_haks/poa_exp_spells/nw_s0_vamptch.ncs deleted file mode 100644 index 930c9596..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_vamptch.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_vamptch.nss b/_haks/poa_exp_spells/nw_s0_vamptch.nss deleted file mode 100644 index bcca6423..00000000 --- a/_haks/poa_exp_spells/nw_s0_vamptch.nss +++ /dev/null @@ -1,127 +0,0 @@ -/* - nw_s0_vamptch - - drain 1d6 - HP per 2 caster levels from the target. - - By: Preston Watamaniuk - Created: Oct 29, 2001 - Modified: Jun 28, 2006 - - Cleaned up -*/ - -//------------------------------------------------------------------------------ -// GZ: gets rids of temporary hit points so that they will not stack -//------------------------------------------------------------------------------ -void PRCRemoveTempHitPoints() -{ - effect eProtection; - int nCnt = 0; - - eProtection = GetFirstEffect(OBJECT_SELF); - while (GetIsEffectValid(eProtection)) - { - if(GetEffectType(eProtection) == EFFECT_TYPE_TEMPORARY_HITPOINTS) - RemoveEffect(OBJECT_SELF, eProtection); - eProtection = GetNextEffect(OBJECT_SELF); - } -} - -#include "prc_sp_func" -#include "prc_inc_sp_tch" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDDice = nCasterLevel / 2; - if ((nDDice) == 0) - nDDice = 1; - else if (nDDice > 20) - nDDice = 20; - - int nDamage = PRCMaximizeOrEmpower(6,nDDice,nMetaMagic); - int nDuration = nCasterLevel/2; - - if ((nMetaMagic & METAMAGIC_EXTEND)) - nDuration *= 2; - - int nMax = GetCurrentHitPoints(oTarget) + 10; - if(nMax < nDamage) - nDamage = nMax; - - - effect eHeal = EffectTemporaryHitpoints(nDamage); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eLink = EffectLinkEffects(eHeal, eDur); - - //effect eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_NEGATIVE); - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eVisHeal = EffectVisualEffect(VFX_IMP_HEALING_M); - - int nPenetr = nCasterLevel + SPGetPenetr(); - int iAttackRoll; - if(GetObjectType(oTarget) == OBJECT_TYPE_CREATURE) - { - if(!GetIsReactionTypeFriendly(oTarget) && - MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD && - !(GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD) && - MyPRCGetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT && - !GetHasSpellEffect(SPELL_NEGATIVE_ENERGY_PROTECTION, oTarget)) - { - SignalEvent(oCaster, EventSpellCastAt(OBJECT_SELF, SPELL_VAMPIRIC_TOUCH, FALSE)); - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_VAMPIRIC_TOUCH, TRUE)); - - iAttackRoll = PRCDoMeleeTouchAttack(oTarget); - - if (iAttackRoll > 0) - { - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDamage, DAMAGE_TYPE_NEGATIVE); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisHeal, oCaster); - PRCRemoveTempHitPoints(); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oCaster, HoursToSeconds(nDuration),TRUE,-1,nCasterLevel); - } - } - } - } - - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_virtue.ncs b/_haks/poa_exp_spells/nw_s0_virtue.ncs deleted file mode 100644 index 4d77aa8c..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_virtue.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_virtue.nss b/_haks/poa_exp_spells/nw_s0_virtue.nss deleted file mode 100644 index 18eb47cb..00000000 --- a/_haks/poa_exp_spells/nw_s0_virtue.nss +++ /dev/null @@ -1,60 +0,0 @@ -/* - nw_s0_virtue - - Target gains 1 temporary HP - - By: Preston Watamaniuk - Created: Sept 6, 2001 - Modified: Jun 28, 2006 - - Cleaned up -*/ - -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nDuration = nCasterLevel; - int nMetaMagic = PRCGetMetaMagicFeat(); - effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID); - effect eLink = EffectLinkEffects(EffectTemporaryHitpoints(nCasterLevel), EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) nDuration *= 2; //Duration is +100% - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_VIRTUE, FALSE)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(nDuration),TRUE,-1,nCasterLevel); - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/nw_s0_wallfirea.ncs b/_haks/poa_exp_spells/nw_s0_wallfirea.ncs deleted file mode 100644 index 73aaf621..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_wallfirea.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_wallfirea.nss b/_haks/poa_exp_spells/nw_s0_wallfirea.nss deleted file mode 100644 index 6fa2385c..00000000 --- a/_haks/poa_exp_spells/nw_s0_wallfirea.nss +++ /dev/null @@ -1,71 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Wall of Fire: On Enter -//:: NW_S0_WallFireA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Person within the AoE take 4d6 fire damage - per round. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 17, 2001 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - effect eDam; - object oTarget; - //Declare and assign personal impact visual effect. - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator()); - int CasterLvl = PRCGetCasterLevel(GetAreaOfEffectCreator()); - //Capture the first target object in the shape. - oTarget = GetEnteringObject(); - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WALL_OF_FIRE)); - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr)) - { - //Roll damage. - nDamage = d6(4) + (CasterLvl/2); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 24 + (CasterLvl/2);//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget,GetAreaOfEffectCreator())), SAVING_THROW_TYPE_FIRE); - if(nDamage > 0) - { - // Apply effects to the currently selected target. - eDam = PRCEffectDamage(oTarget, nDamage, GetLocalInt(OBJECT_SELF, "Wall_Fire_Damage")); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/nw_s0_wallfirec.ncs b/_haks/poa_exp_spells/nw_s0_wallfirec.ncs deleted file mode 100644 index adb9889e..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_wallfirec.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_wallfirec.nss b/_haks/poa_exp_spells/nw_s0_wallfirec.nss deleted file mode 100644 index 339c63df..00000000 --- a/_haks/poa_exp_spells/nw_s0_wallfirec.nss +++ /dev/null @@ -1,98 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Wall of Fire: Heartbeat -//:: NW_S0_WallFireA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Person within the AoE take 4d6 fire damage - per round. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: May 17, 2001 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - effect eDam; - object oTarget; - //Declare and assign personal impact visual effect. - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - //Capture the first target object in the shape. - - //-------------------------------------------------------------------------- - // GZ 2003-Oct-15 - // When the caster is no longer there, all functions calling - // GetAreaOfEffectCreator will fail. Its better to remove the barrier then - //-------------------------------------------------------------------------- - if (!GetIsObjectValid(GetAreaOfEffectCreator())) - { - DestroyObject(OBJECT_SELF); - return; - } - - int CasterLvl = PRCGetCasterLevel(GetAreaOfEffectCreator()); - - int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator(),CasterLvl); - int EleDmg = GetLocalInt(OBJECT_SELF, "Wall_Fire_Damage"); - - oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Declare the spell shape, size and the location. - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WALL_OF_FIRE)); - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr)) - { - //Roll damage. - nDamage = d6(4) + (CasterLvl/2); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 24 + (CasterLvl/2);//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - - int nDC = PRCGetSaveDC(oTarget,GetAreaOfEffectCreator()); - - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (nDC), SAVING_THROW_TYPE_FIRE); - if(nDamage > 0) - { - // Apply effects to the currently selected target. - eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 1.0,FALSE); - } - } - } - //Select the next target within the spell shape. - oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/nw_s0_weird.ncs b/_haks/poa_exp_spells/nw_s0_weird.ncs deleted file mode 100644 index 2d4e7ce8..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_weird.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_weird.nss b/_haks/poa_exp_spells/nw_s0_weird.nss deleted file mode 100644 index 766324cf..00000000 --- a/_haks/poa_exp_spells/nw_s0_weird.nss +++ /dev/null @@ -1,156 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Weird -//:: NW_S0_Weird -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - All enemies in LOS of the spell must make 2 saves or die. - Even IF the fortitude save is succesful, they will still take - 3d6 damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: DEc 14 , 2001 -//::////////////////////////////////////////////// -//:: Last Updated By: Preston Watamaniuk, On: April 10, 2001 -//:: VFX Pass By: Preston W, On: June 27, 2001 - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ILLUSION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget; - effect eDam; - effect eVis = EffectVisualEffect(VFX_IMP_SONIC); - effect eVis2 = EffectVisualEffect(VFX_IMP_DEATH); - effect eWeird = EffectVisualEffect(VFX_FNF_WEIRD); - effect eAbyss = EffectVisualEffect(VFX_DUR_ANTI_LIGHT_10); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - - - int nCasterLvl =CasterLvl; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - float fDelay; - - CasterLvl +=SPGetPenetr(); - - //Apply the FNF VFX impact - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eWeird, PRCGetSpellTargetLocation()); - //Get the first target in the spell area - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, PRCGetSpellTargetLocation(), TRUE); - while (GetIsObjectValid(oTarget)) - { - //Make a faction check - if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) - { - fDelay = PRCGetRandomDelay(3.0, 4.0); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WEIRD)); - //Make an SR Check - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay)) - { - if ( !GetIsImmune(oTarget, IMMUNITY_TYPE_MIND_SPELLS,OBJECT_SELF) && - !GetIsImmune(oTarget, IMMUNITY_TYPE_FEAR,OBJECT_SELF)) - { - if(GetHitDice(oTarget) >= 4) - { - int nDC =PRCGetSaveDC(oTarget,OBJECT_SELF); - //Make a Will save against mind-affecting - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (nDC), SAVING_THROW_TYPE_MIND_SPELLS, OBJECT_SELF, fDelay)) - { - //Make a fortitude save against death - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (nDC), SAVING_THROW_TYPE_DEATH, OBJECT_SELF, fDelay)) - { - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - // This script does nothing if it has Mettle, bail - return; - - //Roll damage - nDamage = d6(3) + nCasterLvl; - //Make metamagic check - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 18 + nCasterLvl; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = FloatToInt( IntToFloat(nDamage) * 1.5 ); - } - - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - - //Set damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL); - //Apply VFX Impact and damage effect - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - } - else - { - // * I failed BOTH saving throws. Now I die. - - DeathlessFrenzyCheck(oTarget); - - //Apply VFX impact and death effect - //DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); - effect eDeath = EffectDeath(); - if(!GetPRCSwitch(PRC_165_DEATH_IMMUNITY)) - eDeath = SupernaturalEffect(eDeath); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); - } - } // Will save - } - else - { - // * I have less than 4HD, I die. - - DeathlessFrenzyCheck(oTarget); - effect eDeath = EffectDeath(); - if(!GetPRCSwitch(PRC_165_DEATH_IMMUNITY)) - eDeath = SupernaturalEffect(eDeath); - - //Apply VFX impact and death effect - //DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); - } - } - } - } - //Get next target in spell area - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, PRCGetSpellTargetLocation(), TRUE); - } - - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/nw_s0_wordfaith.ncs b/_haks/poa_exp_spells/nw_s0_wordfaith.ncs deleted file mode 100644 index 5cc03493..00000000 Binary files a/_haks/poa_exp_spells/nw_s0_wordfaith.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/nw_s0_wordfaith.nss b/_haks/poa_exp_spells/nw_s0_wordfaith.nss deleted file mode 100644 index ec4c70b7..00000000 --- a/_haks/poa_exp_spells/nw_s0_wordfaith.nss +++ /dev/null @@ -1,166 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Word of Faith -//:: [NW_S0_WordFaith.nss] -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - A 30ft blast of divine energy rushs out from the - Cleric blasting all enemies with varying effects - depending on their HD. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Feb 5, 2001 -//::////////////////////////////////////////////// -//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001 -//:: Sep 2002: fixed the 'level 8' instantkill problem -//:: description is slightly inaccurate but I won't change it -//:: Georg: It's nerf time! oh yes. The spell now matches it's description. - - -//:: modified by mr_bumpkin Dec 4, 2003 -#include "prc_inc_spells" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - //DeleteLocalInt(OBJECT_SELF, "specific_spellschool_number"); - //SetLocalInt(OBJECT_SELF, "specific_spellschool_number", - - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget; - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - effect eBlind = EffectBlindness(); - effect eStun = EffectStunned(); - effect eConfuse = PRCEffectConfused(); - effect eDeath = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - effect eSmite = EffectVisualEffect(VFX_FNF_WORD); - effect eSonic = EffectVisualEffect(VFX_IMP_SONIC); - effect eUnsummon = EffectVisualEffect(VFX_IMP_UNSUMMON); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eKill; - effect eLink; - int nHD; - float fDelay; - int nDuration = CasterLvl / 2; - - int nPenetr = CasterLvl + SPGetPenetr(); - - //Apply the FNF VFX impact to the target location - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eSmite, PRCGetSpellTargetLocation()); - //Get the first target in the spell area - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, PRCGetSpellTargetLocation()); - while (GetIsObjectValid(oTarget)) - { - //Make a faction check - if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) - { - fDelay = PRCGetRandomDelay(0.5, 2.0); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WORD_OF_FAITH)); - //Make SR check - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr, fDelay)) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eSonic, oTarget); - //---------------------------------------------------------- - //Check if the target is an outsider - //GZ: And do nothing anymore. This was not supposed to happen - //---------------------------------------------------------- - /*if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_OUTSIDER || MyPRCGetRacialType(oTarget) == RACIAL_TYPE_ELEMENTAL) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eUnsummon, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); - }*/ - - ///---------------------------------------------------------- - // And this is the part where the divine power smashes the - // unholy summoned creature and makes it return to its homeplane - //---------------------------------------------------------- - if (GetIsObjectValid(GetMaster(oTarget))) - { - if (GetAssociateType(oTarget) == ASSOCIATE_TYPE_SUMMONED) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eUnsummon, oTarget)); - if(!GetIsImmune(oTarget, IMMUNITY_TYPE_DEATH)) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); - } - else - { - eKill = PRCEffectDamage(oTarget, GetCurrentHitPoints(oTarget)+10); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eKill, oTarget)); - } - } - } - else - { - //Check the HD of the creature - nHD = GetHitDice(oTarget); - //Apply the appropriate effects based on HD - if (nHD >= 40) - { - eLink = EffectLinkEffects(eStun, eDur); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlind, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl)); - } - else if (nHD >= 30 && nHD < 40) - { - eLink = EffectLinkEffects(eStun, eMind); - eLink = EffectLinkEffects(eLink, eDur); - eLink = EffectLinkEffects(eLink, eBlind); - - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl)); - } - else if (nHD > 20 && nHD < 30) - { - eLink = EffectLinkEffects(eStun, eMind); - eLink = EffectLinkEffects(eLink, eDur); - eLink = EffectLinkEffects(eLink, eConfuse); - eLink = EffectLinkEffects(eLink, eBlind); - - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl)); - } - else - { - DeathlessFrenzyCheck(oTarget); - - if(!GetIsImmune(oTarget, IMMUNITY_TYPE_DEATH)) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); - } - } - } - } - //Get the next target in the spell area - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, PRCGetSpellTargetLocation()); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/sp_aberrate.ncs b/_haks/poa_exp_spells/sp_aberrate.ncs deleted file mode 100644 index c4c49987..00000000 Binary files a/_haks/poa_exp_spells/sp_aberrate.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_aberrate.nss b/_haks/poa_exp_spells/sp_aberrate.nss deleted file mode 100644 index 0bfdd68e..00000000 --- a/_haks/poa_exp_spells/sp_aberrate.nss +++ /dev/null @@ -1,141 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Aberrate -//:: FileName sp_aberrate.nss -//::////////////////////////////////////////////// -/**@file Aberrate -Transmutation [Evil] -Level: Sor/Wiz 1 -Components: V, S, Fiend -Casting Time: 1 action -Range: Touch -Target: One living creature -Duration: 10 minutes/level -Saving Throw: Fortitude negates -Spell Resistance: Yes - -The caster transforms one creature into an aberration. -The subject's form twists and mutates into a hideous -mockery of itself. The subject's type changes to -aberration, and it gains a +1 natural armor bonus to -AC (due to the toughening and twisting of the flesh) -for every four levels the caster has, up to a maximum -of +5. - -Author: Tenjac -Created: -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_sp_tch" -#include "prc_sp_func" -#include "prc_add_spell_dc" - -int DoSpell(object oCaster, object oTarget, int nCasterLvl, int nEvent) -{ - object oSkin = GetPCSkin(oTarget); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDC = PRCGetSaveDC(oTarget, oCaster); - float fDur = (600.0f * nCasterLvl); - if(nMetaMagic & METAMAGIC_EXTEND) - fDur = fDur * 2; - int bFriendly = TRUE; - if(oCaster == oTarget) bFriendly = FALSE; - - //Signal spell firing - PRCSignalSpellEvent(oTarget, bFriendly, SPELL_ABERRATE, oCaster); - - //if friendly - if(GetIsReactionTypeFriendly(oTarget, oCaster) || - //or failed SR check - (!PRCDoResistSpell(oCaster, oTarget, nCasterLvl + SPGetPenetr())) && PRCGetIsAliveCreature(oTarget)) - { - //if friendly - if(GetIsReactionTypeFriendly(oTarget, oCaster) || - //or failed save - (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL))) - { - int nBonus = 1; - - if(nCasterLvl > 7) nBonus = 2; - - if(nCasterLvl > 11) nBonus = 3; - - if(nCasterLvl > 15) nBonus = 4; - - if(nCasterLvl > 19) nBonus = 5; - //alteracao rafael 1/6/2021 adicionado progressao da magia ate nivel 79 de caster - if(nCasterLvl > 23) nBonus = 6; - - if(nCasterLvl > 27) nBonus = 7; - - if(nCasterLvl > 31) nBonus = 8; - - if(nCasterLvl > 35) nBonus = 9; - - if(nCasterLvl > 39) nBonus = 10; - - if(nCasterLvl > 43) nBonus = 11; - - if(nCasterLvl > 47) nBonus = 12; - - if(nCasterLvl > 51) nBonus = 13; - - if(nCasterLvl > 55) nBonus = 14; - - if(nCasterLvl > 59) nBonus = 15; - - if(nCasterLvl > 63) nBonus = 16; - - if(nCasterLvl > 67) nBonus = 17; - - if(nCasterLvl > 71) nBonus = 18; - - if(nCasterLvl > 75) nBonus = 19; - - if(nCasterLvl > 79) nBonus = 20; - - if(nCasterLvl > 83) nBonus = 21; - - itemproperty ipRace = PRCItemPropertyBonusFeat(FEAT_ABERRATION); - effect eArmor = EffectACIncrease(nBonus, AC_NATURAL_BONUS); - effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - AddItemProperty(DURATION_TYPE_TEMPORARY, ipRace, oSkin, fDur); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eArmor, oTarget, fDur, TRUE, SPELL_ABERRATE, nCasterLvl, oCaster); - } - } - //SPEvilShift(oCaster); - - return TRUE;// return TRUE if spell charges should be decremented -} - -void main() -{ - if (!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { - //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_acidstorm.ncs b/_haks/poa_exp_spells/sp_acidstorm.ncs deleted file mode 100644 index 57470ec9..00000000 Binary files a/_haks/poa_exp_spells/sp_acidstorm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_acidstorm.nss b/_haks/poa_exp_spells/sp_acidstorm.nss deleted file mode 100644 index faa04e9c..00000000 --- a/_haks/poa_exp_spells/sp_acidstorm.nss +++ /dev/null @@ -1,24 +0,0 @@ - -#include "spinc_burst" -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - // Get the number of damage dice. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nDice = nCasterLvl; - if (nDice > 40) nDice = 40; - - // Acid storm is a huge burst doing 1d6 / lvl acid damage (15 cap) - DoBurst (nCasterLvl,6, 0, nDice, - VFX_FNF_ACIDSTORM, VFX_IMP_ACID_S, - RADIUS_SIZE_HUGE, DAMAGE_TYPE_ACID, DAMAGE_TYPE_ACID, SAVING_THROW_TYPE_ACID, - FALSE, SPELL_SCHOOL_EVOCATION, GetSpellId()); - - // Add some extra sfx. - //PlaySound("sco_swar3blue"); -} diff --git a/_haks/poa_exp_spells/sp_agnazscorch.ncs b/_haks/poa_exp_spells/sp_agnazscorch.ncs deleted file mode 100644 index 597bd3bb..00000000 Binary files a/_haks/poa_exp_spells/sp_agnazscorch.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_agnazscorch.nss b/_haks/poa_exp_spells/sp_agnazscorch.nss deleted file mode 100644 index ce35a643..00000000 --- a/_haks/poa_exp_spells/sp_agnazscorch.nss +++ /dev/null @@ -1,17 +0,0 @@ -#include "prc_inc_spells" -#include "spinc_bolt" -#include "prc_add_spell_dc" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - // Get the number of damage dice. - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - int nDice = (nCasterLevel + 1) / 2; - if (nDice > 20) nDice = 20; - - DoBolt (nCasterLevel,8, 0, nDice, VFX_BEAM_FIRE_LASH, VFX_IMP_FLAME_S, - DAMAGE_TYPE_FIRE, SAVING_THROW_TYPE_FIRE); -} diff --git a/_haks/poa_exp_spells/sp_apoc_sky.ncs b/_haks/poa_exp_spells/sp_apoc_sky.ncs deleted file mode 100644 index ae145a13..00000000 Binary files a/_haks/poa_exp_spells/sp_apoc_sky.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_apoc_sky.nss b/_haks/poa_exp_spells/sp_apoc_sky.nss deleted file mode 100644 index f019711c..00000000 --- a/_haks/poa_exp_spells/sp_apoc_sky.nss +++ /dev/null @@ -1,117 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Apocalypse from the Sky -//:: FileName sp_apoc_sky.nss -//::////////////////////////////////////////////// -/**@file Apocalypse from the Sky -Conjuration (Creation) [Evil] -Level: Corrupt 9 -Components: V, S, M, Corrupt -Casting Time: 1 day -Range: Personal -Area: 10-mile radius/level, centered on caster -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -The caster calls upon the darkest forces in all -existence to rain destruction down upon the land. -All creatures and objects in the spell's area take -10d6 points of fire, acid, or sonic damage -(caster's choice). This damage typically levels -forests, sends mountains tumbling, and wipes out -entire populations of living creatures. The caster -is subject to the damage as well as the corruption -cost. - -Material Component: An artifact, usually one of good -perverted to this corrupt use. - -Corruption Cost: 3d6 points of Constitution damage -and 4d6 points of Wisdom drain. Just preparing this -spell deals 1d3 points of wisdom damage, with another -1d3 points of Wisdom damage for each day it remains -among the caster's prepared spells. - -Author: Tenjac -Created: -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_alterations" -#include "prc_inc_spells" -#include "prc_spell_const" -#include "prc_add_spell_dc" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - // Run the spellhook. - if (!X2PreSpellCastCode()) return; - - //define vars - object oPC = OBJECT_SELF; - object oArea = GetArea(oPC); - int nDam; - int nDamType; - int nSpell = GetSpellId(); - effect eVis; - int nCasterLevel = PRCGetCasterLevel(oPC); - //Handle damage types - if(nSpell == SPELL_APOCALYPSE_FROM_THE_SKY_FIRE) - { - nDamType = DAMAGE_TYPE_FIRE; - eVis = EffectVisualEffect(VFX_FNF_METEOR_SWARM); - } - - if(nSpell == SPELL_APOCALYPSE_FROM_THE_SKY_ACID) - { - nDamType = DAMAGE_TYPE_ACID; - eVis = EffectVisualEffect(VFX_FNF_STORM); - } - - if(nSpell == SPELL_APOCALYPSE_FROM_THE_SKY_SONIC) - { - nDamType = DAMAGE_TYPE_SONIC; - eVis = EffectVisualEffect(VFX_FNF_SOUND_BURST); - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC); - - object oObject = GetFirstObjectInArea(oArea); - - //Loop - while(GetIsObjectValid(oObject)) - { - nDam = d6(nCasterLevel); - - //if extra damage switch set, ndam=d4(40) - if(GetPRCSwitch("PRC_AFTS_EXTRA_DAMAGE")) - { - nDam = d8(nCasterLevel); - } - - effect eDam = PRCEffectDamage(oObject, nDam, nDamType); - - //Apply - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oObject); - - oObject = GetNextObjectInArea(); - } - - //SPEvilShift(oPC); - - //Corruption cost - int nDam1 = d6(3); - int nDam2 = d6(4); - - DoCorruptionCost(oPC, ABILITY_CONSTITUTION, nDam1, 0); - DoCorruptionCost(oPC, ABILITY_WISDOM, nDam2, 1); - - //Corrupt spells get mandatory 10 pt evil adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_EVIL, 10, FALSE); - - PRCSetSchool(); -} - diff --git a/_haks/poa_exp_spells/sp_armordark.ncs b/_haks/poa_exp_spells/sp_armordark.ncs deleted file mode 100644 index 4d3d35ed..00000000 Binary files a/_haks/poa_exp_spells/sp_armordark.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_armordark.nss b/_haks/poa_exp_spells/sp_armordark.nss deleted file mode 100644 index 68d438fe..00000000 --- a/_haks/poa_exp_spells/sp_armordark.nss +++ /dev/null @@ -1,80 +0,0 @@ -/* - sp_armordark - - lvl 4 - +3 bonus to ac plus additional +1 per every 4 lvl of caster to max of +8 . - Gives Darkvision , +2 save against holy , light , or good spells. - - By: ??? - Created: ??? - Modified: Jul 1, 2006 -*/ - -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nCasterLvl = nCasterLevel; - int nMetaMagic = PRCGetMetaMagicFeat(); - float fDuration = PRCGetMetaMagicDuration(TenMinutesToSeconds(nCasterLvl)); - - int iAC = 3 + nCasterLvl/4; - if (iAC >25) iAC = 25; - - effect eAC=EffectACIncrease(iAC,AC_DEFLECTION_BONUS); - effect eUltravision = EffectUltravision(); - effect eSaveG=EffectSavingThrowIncrease(2,SAVING_THROW_ALL,SAVING_THROW_TYPE_GOOD); - effect eSaveD=EffectSavingThrowIncrease(2,SAVING_THROW_ALL,SAVING_THROW_TYPE_DIVINE); - - effect eLinks=EffectLinkEffects(eAC,eUltravision); - eLinks=EffectLinkEffects(eLinks,eSaveG); - eLinks=EffectLinkEffects(eLinks,eSaveD); - - object oTarget=PRCGetSpellTargetObject(); - - //Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget, FALSE); - - if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - effect eTurn=EffectTurnResistanceIncrease(4); - eLinks=EffectLinkEffects(eLinks,eTurn); - } - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLinks, oTarget, fDuration,TRUE,-1,nCasterLevel); - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_ayailla_rb.ncs b/_haks/poa_exp_spells/sp_ayailla_rb.ncs deleted file mode 100644 index 45ad2194..00000000 Binary files a/_haks/poa_exp_spells/sp_ayailla_rb.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_ayailla_rb.nss b/_haks/poa_exp_spells/sp_ayailla_rb.nss deleted file mode 100644 index 1a7f4d50..00000000 --- a/_haks/poa_exp_spells/sp_ayailla_rb.nss +++ /dev/null @@ -1,107 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Ayailla's Radiant Burst -//:: FileName sp_ayaiila_rb.nss -//::////////////////////////////////////////////// -/**@file Ayailla's Radiant Burst -Evocation [Good] -Level: Sanctified 2 -Components: V, S, Sacrifice -Casting Time: 1 standard action -Range: 60 ft. -Area: Cone-shaped burst -Duration: Instantaneous -Saving Throw: Fortitude negates (blindness) and -Reflex half (shards) -Spell Resistance: Yes - -Shards of heavenly light spray from your fingertips, -blinding evil creatures in their path for 1 round. -A successful Fortitude save negates the blindness. -The luminous shards also sear the flesh of evil -creatures, dealing 1d6 points of damage per two -caster levels (maximum 5d6). A successful Reflex -save halves the damage, which is of divine origin. - -Sacrifice: 1d2 points of Strength damage. - -Author: Tenjac -Created: 6/1/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDC; - int nDam; - int nMetaMagic = PRCGetMetaMagicFeat(); - location lLoc = PRCGetSpellTargetLocation(); - object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 18.28f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - float fDur = 6.0f; - - //Metamagic extend - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur = fDur * 2; - } - - while(GetIsObjectValid(oTarget)) - { - //make sure it's not the PC - if(oTarget != oPC) - { - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()) && GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) - { - nDC = PRCGetSaveDC(oTarget, oPC); - - if(PRCGetIsAliveCreature(oTarget)) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBlindness(), oTarget, fDur); - } - } - - //evil take damage, separate saving throw - nDam = d6(PRCMin(5, nCasterLvl/2)); - - //maximize - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (PRCMin(20, nCasterLvl/2)); - } - - //empower - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC)) nDam = (nDam/2); - - //Apply damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_DIVINE), oTarget); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 18.28f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - - //Bwahah... yes, it's secretly Corruption cost and not Sacrifice :P - DoCorruptionCost(oPC, ABILITY_STRENGTH, d2(), 0); - - //Sanctified spells get mandatory 10 pt good adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE); - - //SPGoodShift(oPC); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_bigby_sf.ncs b/_haks/poa_exp_spells/sp_bigby_sf.ncs deleted file mode 100644 index 1e9f5ad0..00000000 Binary files a/_haks/poa_exp_spells/sp_bigby_sf.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_bigby_sf.nss b/_haks/poa_exp_spells/sp_bigby_sf.nss deleted file mode 100644 index f69a4d04..00000000 --- a/_haks/poa_exp_spells/sp_bigby_sf.nss +++ /dev/null @@ -1,199 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Bigby's Striking Fist -//:: FileName sp_bigby_sf.nss -//::////////////////////////////////////////////// -/**@file Bigby's Striking Fist -Evocation [Force] -Level: Duskblade 2, sorcerer/wizard 2 -Components: V,S,M -Casting Time: 1 standard action -Range: Medium -Target: One creature -Duration: Instantaneous -Saving Throw: Reflex partial -Spell Resistance: Yes - -The attack bonus of this striking fist equals your -caster level + your key ability modifier + 2 for the -hand's Strength score (14). The fist deals 1d6 points -of nonlethal damage per two caster levels (maximum 5d6) -and attempts a bull rush. The fist has a bonus of +4 -plus +1 per two caster levels on the bull rush attempt, -and if successful it knocks the subject back in a -direction of your choice. This movement does not -provoke attacks of opportunity. A subject that -succeeds on its Reflex save takes half damage and is -not subject to the bull rush attempt. - -Material Components: Three glass beads. -**/ -/////////////////////////////////////////////////////// -// Author: Tenjac -// Date: 27.9.06 -/////////////////////////////////////////////////////// - -int DoBullRushAttack(object oTarget, int nAttackBonus, int nCasterLevel); -void DoPush(object oTarget, object oCreator, int nReverse = FALSE); -int EvalSizeBonus(object oSubject); - -#include "prc_inc_combat" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCasterLevel = PRCGetCasterLevel(oPC); - int nDisplayFeedback; - - int nClassType = PRCGetLastSpellCastClass(); - - int nAbilityScore = GetAbilityScoreForClass(nClassType, oPC); - int nAttackBonus = (2 + nCasterLevel + (nAbilityScore - 10)/2); - - int iAttackRoll = GetAttackRoll(oTarget, OBJECT_INVALID, OBJECT_INVALID, 0, nAttackBonus,0,nDisplayFeedback, 0.0, TOUCH_ATTACK_MELEE_SPELL); - - if (iAttackRoll > 0) - { - int nDam = d6(PRCMin(20, (nCasterLevel/2))); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (PRCMin(20, (nCasterLevel/2))); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //save - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, PRCGetSaveDC(oTarget, oPC), SAVING_THROW_TYPE_SPELL)) - { - //Bull Rush - if(DoBullRushAttack(oTarget, nAttackBonus, nCasterLevel)) - { - DoPush(oTarget, oPC); - } - } - - else - { - nDam = (nDam / 2); - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - } - PRCSetSchool(); -} - - -int DoBullRushAttack(object oTarget, int nAttackBonus, int nCasterLevel) -{ - int nSuccess = 0; - int nSizeBonus = EvalSizeBonus(oTarget); - int nBullRushFist = 14 + (4 + (nCasterLevel/2)); - int nBullRushOpposed = GetAbilityScore(oTarget, ABILITY_STRENGTH) + nSizeBonus; - - if(nBullRushFist > nBullRushOpposed) - { - nSuccess = 1; - } - return nSuccess; -} - -void DoPush(object oTarget, object oCreator, int nReverse = FALSE) -{ - // Calculate how far the creature gets pushed - float fDistance = FeetToMeters(10.0f); - // Determine if they hit a wall on the way - location lCreator = GetLocation(oCreator); - location lTargetOrigin = GetLocation(oTarget); - vector vAngle = AngleToVector(GetRelativeAngleBetweenLocations(lCreator, lTargetOrigin)); - vector vTargetOrigin = GetPosition(oTarget); - vector vTarget = vTargetOrigin + (vAngle * fDistance); - - if(!LineOfSightVector(vTargetOrigin, vTarget)) - { - // Hit a wall, binary search for the wall - float fEpsilon = 1.0f; // Search precision - float fLowerBound = 0.0f; // The lower search bound, initialise to 0 - float fUpperBound = fDistance; // The upper search bound, initialise to the initial distance - fDistance = fDistance / 2; // The search position, set to middle of the range - - do{ - // Create test vector for this iteration - vTarget = vTargetOrigin + (vAngle * fDistance); - - // Determine which bound to move. - if(LineOfSightVector(vTargetOrigin, vTarget)) - fLowerBound = fDistance; - else - fUpperBound = fDistance; - - // Get the new middle point - fDistance = (fUpperBound + fLowerBound) / 2; - }while(fabs(fUpperBound - fLowerBound) > fEpsilon); - } - - // Create the final target vector - vTarget = vTargetOrigin + (vAngle * fDistance); - - // Move the target - location lTargetDestination = Location(GetArea(oTarget), vTarget, GetFacing(oTarget)); - AssignCommand(oTarget, ClearAllActions(TRUE)); - AssignCommand(oTarget, JumpToLocation(lTargetDestination)); -} - -int EvalSizeBonus(object oSubject) -{ - int nSize = PRCGetCreatureSize(oSubject); - int nBonus; - - //Eval size - - if(nSize == CREATURE_SIZE_LARGE) - { - nBonus = 4; - } - else if(nSize == CREATURE_SIZE_HUGE) - { - nBonus = 8; - } - else if(nSize == CREATURE_SIZE_GARGANTUAN) - { - nBonus = 12; - } - else if(nSize == CREATURE_SIZE_COLOSSAL) - { - nBonus = 16; - } - else if(nSize == CREATURE_SIZE_SMALL) - { - nBonus = -4; - } - else if(nSize == CREATURE_SIZE_TINY) - { - nBonus = -8; - } - else if(nSize == CREATURE_SIZE_DIMINUTIVE) - { - nBonus = -12; - } - else if (nSize == CREATURE_SIZE_FINE) - { - nBonus = -16; - } - else - { - nBonus = 0; - } - - return nBonus; -} - diff --git a/_haks/poa_exp_spells/sp_bigby_trip.ncs b/_haks/poa_exp_spells/sp_bigby_trip.ncs deleted file mode 100644 index 1b0e4121..00000000 Binary files a/_haks/poa_exp_spells/sp_bigby_trip.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_bigby_trip.nss b/_haks/poa_exp_spells/sp_bigby_trip.nss deleted file mode 100644 index f3ccafd3..00000000 --- a/_haks/poa_exp_spells/sp_bigby_trip.nss +++ /dev/null @@ -1,128 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Bibgy's Tripping Hand -//:: FileName sp_bigby_trip.nss -//::////////////////////////////////////////////// -/**@file Bigby's Tripping Hand -Evocation[Force] -Level: Duskblade 1, sorcerer/wizard 1 -Components: V,S,M -Casting Time: 1 standard action -Range: Medium -Target: One creature -Duration: Intantaneous -Saving Throw: Reflex negates -Spell Resistance: Yes - -The large hand sweeps at the target creature's legs in -a tripping maneuver. This trip attempt does not provoke -attacks of opportunity. Its attack bonus equals your -caster level + your key ability modifier + 2 for the -hand's Strength score (14). The hand has a bonus of +1 -on the trip attempt for every three caster levels, to a -maximum of +5 at 15th level. - -Material component: Three glass beads -**/ - -int EvalSizeBonus(object oSubject); - -#include "prc_inc_combat" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nClassType = PRCGetLastSpellCastClass(); - int nDisplayFeedback; - - // Let the AI know - PRCSignalSpellEvent(oTarget, TRUE, SPELL_BIGBYS_TRIPPING_HAND, oPC); - - /*If your attack succeeds, make a Strength check opposed by the - defender’s Dexterity or Strength check (whichever ability score - has the higher modifier). A combatant gets a +4 bonus for every - size category he is larger than Medium or a -4 penalty for every - size category he is smaller than Medium. The defender gets a +4 - bonus on his check if he has more than two legs or is otherwise - more stable than a normal humanoid. If you win, you trip the - defender. - */ - int nAbilityScore = GetAbilityScoreForClass(nClassType, oPC); - - int nAttackBonus = (2 + nCasterLvl + (nAbilityScore - 10)/2 ); - int nTripBonus = PRCMin(20,(nCasterLvl/3)); - - int iAttackRoll = GetAttackRoll(oTarget, OBJECT_INVALID, OBJECT_INVALID, 0, nAttackBonus,0,nDisplayFeedback, 0.0, TOUCH_ATTACK_MELEE_SPELL); - if (iAttackRoll > 0) - { - //SR - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //save - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, PRCGetSaveDC(oTarget, oPC), SAVING_THROW_TYPE_SPELL)) - { - int nOpposing = d20() + (PRCMax(GetAbilityModifier(ABILITY_STRENGTH, oTarget), GetAbilityModifier(ABILITY_DEXTERITY, oTarget))) + EvalSizeBonus(oTarget); - int nCheck = d20() + 2 + nTripBonus; - - if(nCheck > nOpposing) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectKnockdown(), oTarget, 6.0f); - } - } - } - } - PRCSetSchool(); -} - -int EvalSizeBonus(object oSubject) -{ - int nSize = PRCGetCreatureSize(oSubject); - int nBonus; - - //Eval size - - if(nSize == CREATURE_SIZE_LARGE) - { - nBonus = 4; - } - else if(nSize == CREATURE_SIZE_HUGE) - { - nBonus = 8; - } - else if(nSize == CREATURE_SIZE_GARGANTUAN) - { - nBonus = 12; - } - else if(nSize == CREATURE_SIZE_COLOSSAL) - { - nBonus = 16; - } - else if(nSize == CREATURE_SIZE_SMALL) - { - nBonus = -4; - } - else if(nSize == CREATURE_SIZE_TINY) - { - nBonus = -8; - } - else if(nSize == CREATURE_SIZE_DIMINUTIVE) - { - nBonus = -12; - } - else if (nSize == CREATURE_SIZE_FINE) - { - nBonus = -16; - } - else - { - nBonus = 0; - } - - return nBonus; -} diff --git a/_haks/poa_exp_spells/sp_blastfrc.ncs b/_haks/poa_exp_spells/sp_blastfrc.ncs deleted file mode 100644 index f1f693e1..00000000 Binary files a/_haks/poa_exp_spells/sp_blastfrc.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_blastfrc.nss b/_haks/poa_exp_spells/sp_blastfrc.nss deleted file mode 100644 index e478ac2c..00000000 --- a/_haks/poa_exp_spells/sp_blastfrc.nss +++ /dev/null @@ -1,109 +0,0 @@ -//:: Name Blast of Force -//:: FileName sp_blastfrc.nss -//::////////////////////////////////////////////// -/** @file -Evocation [Force] -Level: Sorcerer 2, Wizard 2, Force 3, -Components: V, S,\line Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Effect: Ray -Duration: Instantaneous -Saving Throw: Fortitude partial -Spell Resistance: Yes - -Drawing upon magic in its purest form, you send invisible energy whistling through the air to batter your foe. -You must succeed on a ranged touch attack with the ray to strike a target. A blast of force deals 1d6 points -of damage per two caster levels (maximum 5d6). In addition, a successful hit forces the subject to make a -Fortitude save or be knocked prone (size and stability modifiers apply to the saving throw as if the spell -were a bull rush). -*/ -//::////////////////////////////////////////////// -//:: Created By: Tenjac -//:: Created On: 1/20/21//:: -//::////////////////////////////////////////////// - -#include "prc_inc_sp_tch" -#include "prc_sp_func" -#include "prc_add_spell_dc" -#include "prc_inc_combmove" -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary - -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - // Applying Bull Rush bonuses to defender - nSaveDC -= GetCombatMoveCheckBonus(oTarget, COMBAT_MOVE_BULLRUSH, TRUE); - int nPenetr = nCasterLevel + SPGetPenetr(); - PRCSignalSpellEvent(oTarget, TRUE, SPELL_BLASTOFFORCE, oCaster); - - //Make touch attack - int iAttackRoll = PRCDoRangedTouchAttack(oTarget); - //No VFX - if (iAttackRoll) - { - if (!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - int nDice= PRCMin(nCasterLevel/2, 20); - int nDam = d6(nDice); - if(nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 6 * nDice; - if(nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - - if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_SPELL)) - { - nDam /= 2; - if(GetHasMettle(oTarget, SAVING_THROW_FORT)) - nDam = 0; - } - else - { - effect eKnock = EffectKnockdown(); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnock, oTarget, 3.0); - } - - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DESTRUCTION), oTarget); - } - } - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (GetLocalInt(oCaster, PRC_SPELL_HOLD) && GetHasFeat(FEAT_EF_HOLD_RAY, oCaster) && oCaster == oTarget) - { - //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - - if (oCaster != oTarget)//cant target self with this spell, only when holding charge - { - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_blessbahamut.ncs b/_haks/poa_exp_spells/sp_blessbahamut.ncs deleted file mode 100644 index bd818feb..00000000 Binary files a/_haks/poa_exp_spells/sp_blessbahamut.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_blessbahamut.nss b/_haks/poa_exp_spells/sp_blessbahamut.nss deleted file mode 100644 index 1c2cd9cf..00000000 --- a/_haks/poa_exp_spells/sp_blessbahamut.nss +++ /dev/null @@ -1,36 +0,0 @@ -#include "prc_inc_spells" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - - // Declare major variables - object oTarget = PRCGetSpellTargetObject(); - - // Signal the spell cast at event - PRCSignalSpellEvent(oTarget, FALSE); - - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - - // DR 10/-. - effect eStone = EffectDamageReduction(10+ (nCasterLevel/2), DAMAGE_POWER_ENERGY); - eStone = EffectLinkEffects(eStone, EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR)); - - // Get duration, 1 round / level unless extended. - float fDuration = PRCGetMetaMagicDuration(RoundsToSeconds(nCasterLevel)); - - // Build the list of fancy visual effects to apply when the spell goes off. - effect eVFX = EffectVisualEffect(VFX_IMP_DEATH_WARD); - - // Remove existing effect, if any. - PRCRemoveEffectsFromSpell(oTarget, GetSpellId()); - - // Apply effects and VFX to target - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eStone, oTarget, fDuration,TRUE,-1,nCasterLevel); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oTarget); - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_blsflm.ncs b/_haks/poa_exp_spells/sp_blsflm.ncs deleted file mode 100644 index 9c66deaf..00000000 Binary files a/_haks/poa_exp_spells/sp_blsflm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_blsflm.nss b/_haks/poa_exp_spells/sp_blsflm.nss deleted file mode 100644 index c4d1e29a..00000000 --- a/_haks/poa_exp_spells/sp_blsflm.nss +++ /dev/null @@ -1,17 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Blast of Flame - Cone of fire damage 1d6 / level, cap 10. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "spinc_cone" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - DoCone (6, 0, 40, -1, VFX_IMP_FLAME_S, - DAMAGE_TYPE_FIRE, SAVING_THROW_TYPE_FIRE); -} diff --git a/_haks/poa_exp_spells/sp_bolt_glory.ncs b/_haks/poa_exp_spells/sp_bolt_glory.ncs deleted file mode 100644 index 71c8fda2..00000000 Binary files a/_haks/poa_exp_spells/sp_bolt_glory.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_bolt_glory.nss b/_haks/poa_exp_spells/sp_bolt_glory.nss deleted file mode 100644 index 957b9e05..00000000 --- a/_haks/poa_exp_spells/sp_bolt_glory.nss +++ /dev/null @@ -1,108 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Bolt of Glory -//:: FileName sp_bolt_glory -//::////////////////////////////////////////////// -/**@file Bolt of Glory -Evocation [Good] -Level: Exalted arcanist 6, Glory 6 -Components: V, S, DF -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./level) -Effect: Ray -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -By casting this spell, you project a bolt of -energy from the Positive Energy Plane against one -creature. You must succeed on a ranged touch -attack to strike your target. A creature struck -takes varying damage, depending on its nature, -home plane of existence and your level: - -Creature's Origin Damage - -Material Plane, -Elemental, -neutral outsider 1d6/2 levels (7d6 maximum) - -Positive Energy Plane, -good outsider none - -Evil outsider, -undead creature, -Negative Energy Plane 1d6/level (15d6 maximum) - - -Author: Tenjac -Created: -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_sp_tch" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nTouch = PRCDoRangedTouchAttack(oTarget); - int nCasterLevel = PRCGetCasterLevel(oPC); - int nRace = MyPRCGetRacialType(oTarget); - int nAlign = GetAlignmentGoodEvil(oTarget); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDam; - - PRCSignalSpellEvent(oTarget,TRUE, SPELL_BOLT_OF_GLORY, oPC); - - //Beam VFX. Ornedan is my hero. - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(VFX_BEAM_HOLY, oPC, BODY_NODE_HAND, !nTouch), oTarget, 1.0f); - - //Crits automatic? - if(nTouch) - { - //SR - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLevel + SPGetPenetr())) - { - if((nRace == RACIAL_TYPE_UNDEAD) || (nRace == RACIAL_TYPE_OUTSIDER && nAlign == ALIGNMENT_EVIL)) - { - nDam = d6(PRCMin(nCasterLevel, 40)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * PRCMin(nCasterLevel, 40); - } - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - } - - if((nRace == RACIAL_TYPE_ELEMENTAL) || - //neutral outsider - (nRace == RACIAL_TYPE_OUTSIDER && nAlign == ALIGNMENT_NEUTRAL) || - //Material native and living - (nRace != RACIAL_TYPE_OUTSIDER && nRace != RACIAL_TYPE_UNDEAD && nRace != RACIAL_TYPE_CONSTRUCT)) - { - nDam = d6(PRCMin(nCasterLevel/2, 30)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * PRCMin(nCasterLevel/2, 30); - } - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_DIVINE), oTarget); - } - } - //SPGoodShift(oPC); - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_celest_bld.ncs b/_haks/poa_exp_spells/sp_celest_bld.ncs deleted file mode 100644 index c2ced2dc..00000000 Binary files a/_haks/poa_exp_spells/sp_celest_bld.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_celest_bld.nss b/_haks/poa_exp_spells/sp_celest_bld.nss deleted file mode 100644 index bab32552..00000000 --- a/_haks/poa_exp_spells/sp_celest_bld.nss +++ /dev/null @@ -1,89 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Celestial blood -//:: FileName sp_celest_bld.nss -//::////////////////////////////////////////////// -/**@file Celestial Blood -Abjuration [Good] -Level: Apostle of peace 6, Clr 6, Pleasure 6 -Components: V, S, M -Casting Time: 1 round -Range: Touch -Target: Non-evil creature touched -Duration: 1 minute/level -Saving Throw: None -Spell Resistance: Yes (harmless) - -You channel holy power to grant the subject some of -the protection enjoyed by celestial creatures. The -subject gains resistance 10 to acid, cold, and -electricity, a +4 bonus on saving throws against -poison, and damage reduction 10/evil. - -Material Component: A vial of holy water, with -which you anoint the subject's head. - -Author: Tenjac -Created: 6/16/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_sp_func" - -int DoSpell(object oCaster, object oTarget, int nCasterLevel) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - float fDur = TurnsToSeconds(nCasterLevel); - if(nMetaMagic & METAMAGIC_EXTEND) - fDur *= 2; - - if(GetAlignmentGoodEvil(oTarget) != ALIGNMENT_EVIL) - { - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_CELESTIAL_BLOOD, FALSE)); - - effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID); - - effect eLink = EffectDamageResistance(DAMAGE_TYPE_ACID, 10, 0); - eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_COLD, 10+(nCasterLevel/2), 0)); - eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ELECTRICAL, 10+(nCasterLevel/2), 0)); - eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_ALL, 4, SAVING_THROW_TYPE_POISON)); - eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - - //Can't do DR 10/evil - eLink = EffectLinkEffects(eLink, EffectDamageReduction(10+(nCasterLevel/2), DAMAGE_POWER_PLUS_TWO)); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDur, TRUE, SPELL_CELESTIAL_BLOOD, nCasterLevel, oCaster); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - //SPGoodShift(oCaster); - - return TRUE; -} - -void main() -{ - if (!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_chaavs_lgh.ncs b/_haks/poa_exp_spells/sp_chaavs_lgh.ncs deleted file mode 100644 index 2ad7b2df..00000000 Binary files a/_haks/poa_exp_spells/sp_chaavs_lgh.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_chaavs_lgh.nss b/_haks/poa_exp_spells/sp_chaavs_lgh.nss deleted file mode 100644 index 83dac8be..00000000 --- a/_haks/poa_exp_spells/sp_chaavs_lgh.nss +++ /dev/null @@ -1,111 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Chaav's Laugh -//:: FileName sp_chaavs_lgh.nss -//::////////////////////////////////////////////// -/**@file Chaav's Laugh -Enchantment (Compulsion)[Good, Mind-Affecting] -Level: Cleric 5, Joy 5 -Components: V -Casting Time: 1 standard action -Range: 40ft -Area: 40-ft-radius spread centered on you -Duration: 1 minute/level -Saving Throw: Will negates -Spell Resistance: Yes - -You release a joyous, boistrous laugh that -strengthens the resolve of good creatures and -weakens the resolve of evil creatures. - -Good creatures within the spell's area gain the -following benefits for the duration of the spell: -a +2 morale bonus on attack rolls an saves against -fear effects. plus temporary hit points equal to -1d8 + caster level(to a maximum of 1d8 +20 at level -20). - -Evil creatures within the spell's are that fail a -Will save take a -2 morale penalty on attack rolls -and saves against fear effects for the duration of -the spell. - -Creatures must beable to hear the laugh to be -affected by the spell. Creatures that are neither -good nor evil are anaffected by Chaav's Laugh. - -Author: Tenjac -Created: 7/10/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT); - - object oPC = OBJECT_SELF; - location lLoc = GetLocation(oPC); - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 12.19f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDC; - int nAlign; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nModify = 2; - float fDur = (60.0f * nCasterLvl); - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nModify = 3; - } - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - effect eVilLink = EffectLinkEffects(EffectAttackDecrease(nModify, ATTACK_BONUS_MISC), EffectSavingThrowDecrease(SAVING_THROW_ALL, nModify, SAVING_THROW_TYPE_FEAR)); - effect eGoodLink = EffectLinkEffects(EffectAttackIncrease(nModify, ATTACK_BONUS_MISC), EffectSavingThrowIncrease(SAVING_THROW_ALL, nModify, SAVING_THROW_TYPE_FEAR)); - eGoodLink = EffectLinkEffects(eGoodLink, EffectTemporaryHitpoints(d8(1) + PRCMin(40, nCasterLvl))); - - while(GetIsObjectValid(oTarget)) - { - nAlign = GetAlignmentGoodEvil(oTarget); - nDC = PRCGetSaveDC(oTarget, oPC); - - if(!PRCGetHasEffect(EFFECT_TYPE_DEAF, oTarget)) - { - - if (nAlign == ALIGNMENT_EVIL) - { - //SR - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //Save - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVilLink, oTarget, fDur); - } - } - } - - if(nAlign == ALIGNMENT_GOOD) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eGoodLink, oTarget, fDur); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 12.19f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - //SPGoodShift(oPC); - PRCSetSchool(); -} - - - - - - \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_chan_pyrob.ncs b/_haks/poa_exp_spells/sp_chan_pyrob.ncs deleted file mode 100644 index 2090a342..00000000 Binary files a/_haks/poa_exp_spells/sp_chan_pyrob.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_chan_pyrob.nss b/_haks/poa_exp_spells/sp_chan_pyrob.nss deleted file mode 100644 index 75f3dcb9..00000000 --- a/_haks/poa_exp_spells/sp_chan_pyrob.nss +++ /dev/null @@ -1,162 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Channeled Pyroburst -//:: FileName sp_chan_pyrob.nss -//::////////////////////////////////////////////// -/**@file Channeled Pyroburst -Evocation [Fire] -Level: Duskblade 4, sorcerer/wizard 4 -Components: V,S -Casting Time: See text -Range: Medium -Area: See text -Duration: Instantaneous -Saving Throw: Reflex half -Spell Resistance: Yes - -This spell creates a bolt of fiery energy that blasts -your enemies. The spell's strength depends on the -amount of time you spend channeling energy into it. - -If you cast this spell as a swift action, it deals -1d4 points of fire damage per two caster levels -(maximum 10d4) against a single target of your choice. - -If you cast this spell as a standard action, it deals -1d6 points of fire damage per caster level -(maximum 10d6) to all creatures in a 10-foot-radius -spread. - -If you cast this spell as a full-round action, it deals -1d8 points of fire damage per caster level -(maximum 10d8) to all creatures in a 15-foot-radius -spread. - -If you spend 2 rounds casting this spell, it deals 1d10 -points of fire damage per caster level (maximum 10d10) -to all creatures in a 20-foot-radius spread. - -You do not need to declare ahead of time how long you -want to spend casting the spell. When you begin casting -the spell, you decide that you are finished casting after -the appropriate time has passed. - -**/ - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - int nSpell = PRCGetSpellId(); - int nCasterLvl = PRCGetCasterLevel(oPC); - object oTarget = PRCGetSpellTargetObject(); - location lLoc = PRCGetSpellTargetLocation(); - int nDC = PRCGetSaveDC(oTarget, oPC); - int nDam; - int nMetaMagic = PRCGetMetaMagicFeat(); - float fRadius = 0.0f; - - PRCSignalSpellEvent(oTarget, TRUE, SPELL_CHANNELED_PYROBURST, oPC); - - //Check Spell Resistance - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //swift - if(nSpell == SPELL_CHANNELED_PYROBURST_1) - { - if(!TakeSwiftAction(oPC)) - { - return; - } - - nDam = d4(PRCMin((nCasterLvl/2), 40)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 4 * (PRCMin((nCasterLvl/2), 40)); - } - } - - //standard - else if(nSpell == SPELL_CHANNELED_PYROBURST_2) - { - nDam = d6(PRCMin(40, nCasterLvl)); - fRadius = 3.048f; - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (PRCMin(40, nCasterLvl)); - } - } - - //full round - else if(nSpell == SPELL_CHANNELED_PYROBURST_3) - { - nDam = d8(PRCMin(40, nCasterLvl)); - fRadius = 4.57f; - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 8 * (PRCMin(40, nCasterLvl)); - } - } - - //two rounds - else if(nSpell == SPELL_CHANNELED_PYROBURST_4) - { - nDam = d10(PRCMin(40, nCasterLvl)); - fRadius = 6.10f; - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 10 * (PRCMin(40, nCasterLvl)); - } - } - - else - { - PRCSetSchool(); - return; - } - - //Metamagic Empower - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_FIRE)) - { - nDam = nDam/2; - } - - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE); - - if(fRadius == 0.0f) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } - - else - { - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRadius, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - - while(GetIsObjectValid(oTarget)) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRadius, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - } - } - PRCSetSchool(); -} - - - - diff --git a/_haks/poa_exp_spells/sp_close_wounds.ncs b/_haks/poa_exp_spells/sp_close_wounds.ncs deleted file mode 100644 index 9a4c0142..00000000 Binary files a/_haks/poa_exp_spells/sp_close_wounds.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_close_wounds.nss b/_haks/poa_exp_spells/sp_close_wounds.nss deleted file mode 100644 index a70bcc2a..00000000 --- a/_haks/poa_exp_spells/sp_close_wounds.nss +++ /dev/null @@ -1,70 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Close Wounds -//:: FileName sp_close_wounds.nss -//::////////////////////////////////////////////// -/** @file Close Wounds -Conjuration (Healing) -Level: Clr 3, Hlr 3 -Components: V -Casting Time: 1 swift action -Range: Close -Target: One creature -Duration: Instantaneous -Saving Throw: Will half (harmless) -Spell Resistance: Yes (harmless) - -This spell cures 2d4 points of damage. You can cast -this spell with an instant utterance. - -Used against an undead creature, close wounds deals -damage instea of curing the creature (which takes half -damage if it makes a Will saving throw). -**/ -////////////////////////////////////////////////// -// Author: Tenjac -// Date: 5.10.06 -/////////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nMetaMagic = PRCGetMetaMagicFeat(); - - int nCasterLvl = PRCGetCasterLevel(oPC); -int nHeal = d4(nCasterLvl)+8; - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nHeal = 8+ (nCasterLvl*4); - - if(nMetaMagic & METAMAGIC_EMPOWER) - nHeal += (nHeal/2); - - //Damage if undead - if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD - || (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)) - { - //SR - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //save for 1/2 dam - if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, oPC), SAVING_THROW_TYPE_POSITIVE)) - nHeal = nHeal/2; - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_S), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nHeal, DAMAGE_TYPE_POSITIVE), oTarget); - } - } - else - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_S), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectHeal(nHeal, oTarget), oTarget); - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_cloud_achaiA.ncs b/_haks/poa_exp_spells/sp_cloud_achaiA.ncs deleted file mode 100644 index 58a781aa..00000000 Binary files a/_haks/poa_exp_spells/sp_cloud_achaiA.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_cloud_achaiA.nss b/_haks/poa_exp_spells/sp_cloud_achaiA.nss deleted file mode 100644 index 5cb6d659..00000000 --- a/_haks/poa_exp_spells/sp_cloud_achaiA.nss +++ /dev/null @@ -1,77 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Cloud of the Achaierai: On Enter -//:: sp_cloud_achaiA.nss -//:: -//::////////////////////////////////////////////// -/* - -*/ -//::////////////////////////////////////////////// -//:: Created By: Tenjac -//:: Created On: 3/24/06 -//::////////////////////////////////////////////// - - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - object oTarget = GetEnteringObject(); - object oPC = GetAreaOfEffectCreator(); - int nMetaMagic = PRCGetMetaMagicFeat(); - effect eDark = EffectDarkness(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eDark, eDur); - effect eConf = PRCEffectConfused(); - effect eLinkConf = EffectLinkEffects(eLink, eConf); - int nCasterLvl = PRCGetCasterLevel(oPC); - float fDuration = (nCasterLvl * 600.0f); - int nDam = d6(nCasterLvl/2)+2; - int nDC = PRCGetSaveDC(oTarget, oPC); - - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_EXTEND)) - { - fDuration = fDuration *2; //Duration is +100% - } - - // * July 2003: If has darkness then do not put it on it again - // Primogenitor: Yes, what about overlapping darkness effects by different casters? - //if (PRCGetHasEffect(EFFECT_TYPE_DARKNESS, oTarget) == TRUE) - //{ - // return; - //} - - //if valid and not caster - if(GetIsObjectValid(oTarget) && oTarget != oPC) - { - //Spell resistance - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //Save - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLinkConf, oTarget, fDuration); - } - else - { - if(!GetHasMettle(oTarget, SAVING_THROW_FORT)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration); - } - } - - //Damage - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } - } - - PRCSetSchool(); -} - - - diff --git a/_haks/poa_exp_spells/sp_clutch_orcus.ncs b/_haks/poa_exp_spells/sp_clutch_orcus.ncs deleted file mode 100644 index adedf060..00000000 Binary files a/_haks/poa_exp_spells/sp_clutch_orcus.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_clutch_orcus.nss b/_haks/poa_exp_spells/sp_clutch_orcus.nss deleted file mode 100644 index 6dca8b7c..00000000 --- a/_haks/poa_exp_spells/sp_clutch_orcus.nss +++ /dev/null @@ -1,101 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Clutch of Orcus -//:: FileName sp_clutch_orcus.nss -//::////////////////////////////////////////////// -/**@file Clutch of Orcus -Necromancy [Evil] -Level: Clr 3 -Components: V, S -Casting Time: 1 action -Range: Medium (100 ft. + 10 ft./level) -Target: One humanoid -Duration: Concentration (see text) -Saving Throw: Fortitude negates (see text) -Spell Resistance: Yes - -The caster creates a magical force that grips the -subject's heart (or similar vital organ) and -begins crushing it. The victim is paralyzed -(as if having a heart attack) and takes 1d3 points -of damage per round. - -Each round, the caster must concentrate to -maintain the spell. In addition, a conscious -victim gains a new saving throw each round to stop -the spell. If the victim dies as a result of this -spell, his chest ruptures and bursts, and his -smoking heart appears in the caster's hand. - -Author: Tenjac -Created: 3/28/05 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void CrushLoop(object oTarget, object oPC, int bEndSpell, int nDC) -{ -int nCasterLvl = PRCGetCasterLevel(oPC); - //Conc check - if(GetBreakConcentrationCheck(oPC)) - { - bEndSpell = TRUE; - } - - //if makes save, abort - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) - { - bEndSpell = TRUE; - } - - //if Conc and failed save... - if(bEndSpell = FALSE) - { - //Paral - effect ePar = EffectParalyze(); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePar, oTarget, 6.0f); - - //damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, d3(nCasterLvl/4)+1, DAMAGE_TYPE_MAGICAL), oTarget); - - //if dead, end effect - if(GetIsDead(oTarget)) - { - effect eChunky = EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eChunky, oTarget); - - //End loop next time so it doesn't keep going forever - bEndSpell = TRUE; - } - - DelayCommand(6.0f, CrushLoop(oTarget, oPC, bEndSpell, nDC)); - } -} - -void main() -{ - // Run the spellhook. - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - object oPC = OBJECT_SELF; - object oTarget= PRCGetSpellTargetObject(); - int bEndSpell = FALSE; - int nDC = PRCGetSaveDC(oTarget, oPC); - int nCasterLvl = PRCGetCasterLevel(oPC); - - PRCSignalSpellEvent(oTarget, TRUE, SPELL_CLUTCH_OF_ORCUS, oPC); - - //Check spell resistance - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //start loop - CrushLoop(oTarget, oPC, bEndSpell, nDC); - } - - //SPEvilShift(oPC); - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_curimpbl.ncs b/_haks/poa_exp_spells/sp_curimpbl.ncs deleted file mode 100644 index 2955cdf3..00000000 Binary files a/_haks/poa_exp_spells/sp_curimpbl.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_curimpbl.nss b/_haks/poa_exp_spells/sp_curimpbl.nss deleted file mode 100644 index 9a9a466e..00000000 --- a/_haks/poa_exp_spells/sp_curimpbl.nss +++ /dev/null @@ -1,40 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Curse of Impending Blades - Target receives a -2 to AC penalty. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - object oTarget = PRCGetSpellTargetObject(); - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - // Get the target and raise the spell cast event. - PRCSignalSpellEvent(oTarget); - - // Determine the spell's duration, taking metamagic feats into account. - float fDuration = PRCGetMetaMagicDuration(MinutesToSeconds(PRCGetCasterLevel())); - - // Determine the save bonus. - int nBonus = 2 + (nCasterLvl / 6); - if (nBonus > 20) nBonus = 20; - - // Apply the curse and vfx. - effect eCurse = EffectACDecrease(2); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE)); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR)); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCurse, oTarget, fDuration,TRUE,-1,nCasterLvl); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE), oTarget); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_curpfail.ncs b/_haks/poa_exp_spells/sp_curpfail.ncs deleted file mode 100644 index 91716a02..00000000 Binary files a/_haks/poa_exp_spells/sp_curpfail.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_curpfail.nss b/_haks/poa_exp_spells/sp_curpfail.nss deleted file mode 100644 index ec5568b0..00000000 --- a/_haks/poa_exp_spells/sp_curpfail.nss +++ /dev/null @@ -1,41 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Curse of Petty Failing - Target takes a -2 penalty to attacks -// and saves. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - object oTarget = PRCGetSpellTargetObject(); - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - // Get the target and raise the spell cast event. - PRCSignalSpellEvent(oTarget); - - // Determine the spell's duration, taking metamagic feats into account. - float fDuration = PRCGetMetaMagicDuration(MinutesToSeconds(PRCGetCasterLevel())); - - // Determine the save bonus. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nBonus = 2 + (nCasterLvl / 6); - if (nBonus > 20) nBonus = 20; - - // Apply the curse and vfx. - effect eCurse = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2); - eCurse = EffectLinkEffects(eCurse, EffectAttackDecrease(2)); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE)); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR)); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCurse, oTarget, fDuration,TRUE,-1,nCasterLvl); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE), oTarget); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_damng_darkA.ncs b/_haks/poa_exp_spells/sp_damng_darkA.ncs deleted file mode 100644 index be1f0676..00000000 Binary files a/_haks/poa_exp_spells/sp_damng_darkA.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_damng_darkA.nss b/_haks/poa_exp_spells/sp_damng_darkA.nss deleted file mode 100644 index 5f64ccca..00000000 --- a/_haks/poa_exp_spells/sp_damng_darkA.nss +++ /dev/null @@ -1,86 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Damning Darkness -//:: FileName sp_damng_dark.nss -//::////////////////////////////////////////////// -/**@file Damning Darkness -Evocation [Darkness, Evil] -Level: Clr 4, Darkness 4, Sor/Wiz 4 -Components: V, M/DF -Casting Time: 1 action -Range: Touch -Target: Object touched -Duration: 10 minutes/level (D) -Saving Throw: None -Spell Resistance: No - -This spell is similar to darkness, except that those -within the area of darkness also take unholy damage. -Creatures of good alignment take 2d6 points of -damage per round in the darkness, and creatures -neither good nor evil take 1d6 points of damage. As -with the darkness spell, the area of darkness is a -20-foot radius, and the object that serves as the -spell's target can be shrouded to block the darkness -(and thus the dam­aging effect). - -Damning darkness counters or dispels any light spell -of equal or lower level. - -Arcane Material Component: A dollop of pitch with a -tiny needle hidden inside it. - -Author: Tenjac -Created: 6/12/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// -void DarkLoop(object oTarget); - - -#include "prc_alterations" -#include "prc_inc_spells" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oTarget = GetEnteringObject(); - object oPC = GetAreaOfEffectCreator(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCasterLvl = PRCGetCasterLevel(oPC); - effect eDark = EffectDarkness(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eDark, eDur); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, (600.0f * nCasterLvl)); - - DarkLoop(oTarget); - - PRCSetSchool(); -} - -void DarkLoop(object oTarget) -{ -object oPC = GetAreaOfEffectCreator(); -int nCasterLvl = PRCGetCasterLevel(oPC); - - if(GetIsObjectValid(oTarget)) - { - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_GOOD) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, d6(nCasterLvl/2)+2, DAMAGE_TYPE_DIVINE), oTarget); - } - - else if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_NEUTRAL) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, d6(nCasterLvl/2)+2, DAMAGE_TYPE_DIVINE), oTarget); - } - - else - { - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE), oTarget, 1.0f); - } - - } - DelayCommand(6.0f, DarkLoop(oTarget)); - -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_dancg_web.ncs b/_haks/poa_exp_spells/sp_dancg_web.ncs deleted file mode 100644 index a9cefc3b..00000000 Binary files a/_haks/poa_exp_spells/sp_dancg_web.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_dancg_web.nss b/_haks/poa_exp_spells/sp_dancg_web.nss deleted file mode 100644 index 6268370e..00000000 --- a/_haks/poa_exp_spells/sp_dancg_web.nss +++ /dev/null @@ -1,97 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Dancing Web -//:: FileName sp_dancg_web.nss -//::////////////////////////////////////////////// -/**@file Dancing Web -Evocation [Good] -Level: Clr 5, Drd 5, Sor/Wiz 4 -Components: V, S, M/DF -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Area: 20-ft.-radius burst -Duration: Instantaneous -Saving Throw: Reflex half; see text -Spell Resistance: Yes - -This spell creates a burst of magical energy that -deals 1d6 points per level of non-lethal damage -maximum 10d6). Further, evil creatures that fail -their saving throw become entangled by lingering -threads of magical energy for 1d6 rounds. An -entangled creature takes a -2 penalty on attack -rolls and a -4 penalty to effective Dexterity; -the entangled target can move at half speed but -can't run or charge. - -Arcane Material Component: A bit of spider's web. - -Author: Tenjac -Created: 7/6/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - location lLoc = PRCGetSpellTargetLocation(); - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 6.10f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - float fDur; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMin = PRCMin(40, nCasterLvl); - int nDam; - int nDC = PRCGetSaveDC(oTarget, oPC); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_DISPEL_DISJUNCTION), lLoc); - - while(GetIsObjectValid(oTarget)) - { - //SR - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //Should be non-lethal - nDam = d6(nMin); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * nMin; - fDur = RoundsToSeconds(6); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) - { - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_GOOD)) - { - fDur = RoundsToSeconds(d6(1)); - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectEntangle(), oTarget, fDur); - } - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 6.10f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - - //SPGoodShift(oPC); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_darkbolt.ncs b/_haks/poa_exp_spells/sp_darkbolt.ncs deleted file mode 100644 index c76801ea..00000000 Binary files a/_haks/poa_exp_spells/sp_darkbolt.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_darkbolt.nss b/_haks/poa_exp_spells/sp_darkbolt.nss deleted file mode 100644 index 1ec8a594..00000000 --- a/_haks/poa_exp_spells/sp_darkbolt.nss +++ /dev/null @@ -1,96 +0,0 @@ -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nPenetr = nCasterLvl + SPGetPenetr(); - - int nMissiles = nCasterLvl/2; - float fDist = GetDistanceBetween(OBJECT_SELF, oTarget); - float fDelay = fDist/(3.0 * log(fDist) + 2.0); - float fDelay2, fTime; - int nCnt; - - effect eBolt = EffectBeam(VFX_BEAM_EVIL, OBJECT_SELF, BODY_NODE_HAND); - effect eMissile = EffectVisualEffect(VFX_BEAM_EVIL); - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eDazed=EffectDazed(); - - effect eVis2 = EffectVisualEffect(VFX_IMP_DAZED_S); - - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RAY_OF_ENFEEBLEMENT)); - //Limit missiles to 7 - if (nMissiles > 40) nMissiles = 40; - - //Make SR Check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr)) - { - //Apply a single damage hit for each missile instead of as a single mass - for (nCnt = 1; nCnt <= nMissiles; nCnt++) - { - //Roll damage - int nDam = d8(2); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDam = 16;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDam = nDam + nDam/2; //Damage/Healing is +50% - } - - fTime = fDelay; - fDelay2 += 0.1; - fTime += fDelay2; - - //Set damage effect - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oTarget, 1.0,FALSE); - - if(MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) - { - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0,FALSE)); - //DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget,1.0)); - - } - - - } - //Make reflex save - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget,OBJECT_SELF))) - { - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,6.0)); - - if(!GetIsImmune(oTarget,IMMUNITY_TYPE_MIND_SPELLS)) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDazed, oTarget,6.0)); - // FloatingTextStringOnCreature("no immune " , OBJECT_SELF, FALSE); - } - else - { - // FloatingTextStringOnCreature("immune " , OBJECT_SELF, FALSE); - - AssignCommand(oTarget,ClearAllActions(TRUE)); - AssignCommand(oTarget,ActionPlayAnimation(ANIMATION_LOOPING_PAUSE,1.0,6.0)); - DelayCommand(0.2,SetCommandable(FALSE,oTarget)); - DelayCommand(6.2,SetCommandable(TRUE,oTarget)); - } - } - } - - - PRCSetSchool(); - -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_darkbolt1.ncs b/_haks/poa_exp_spells/sp_darkbolt1.ncs deleted file mode 100644 index c465e9c4..00000000 Binary files a/_haks/poa_exp_spells/sp_darkbolt1.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_darkbolt1.nss b/_haks/poa_exp_spells/sp_darkbolt1.nss deleted file mode 100644 index 3f5fa847..00000000 --- a/_haks/poa_exp_spells/sp_darkbolt1.nss +++ /dev/null @@ -1,169 +0,0 @@ -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void DarkBolt(object oTarget,int nMissiles, int nDC , int nMetaMagic) -{ - if (GetIsDead(oTarget)) return; - - nMissiles--; - effect eMissile = EffectVisualEffect(VFX_BEAM_EVIL); - effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); - effect eDazed=EffectDazed(); - effect eVis2 = EffectVisualEffect(VFX_IMP_DAZED_S); - //effect eBolt = EffectBeam(VFX_BEAM_EVIL, OBJECT_SELF, BODY_NODE_HAND); - effect eBolt = EffectVisualEffect(VFX_IMP_MIRV); - - float fDist = GetDistanceBetween(OBJECT_SELF, oTarget); - float fDelay = fDist/(3.0 * log(fDist) + 2.0); - float fDelay2, fTime; - - //Make SR Check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget)) - { - //Roll damage - int nDam = d8(2); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDam = 16;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDam = nDam + nDam/2; //Damage/Healing is +50% - } - - fTime = fDelay; - fDelay2 += 0.1; - fTime += fDelay2; - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oTarget, 1.0,FALSE); - - //Set damage effect - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oTarget, 1.0,FALSE); - - if(MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) - { - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0,FALSE)); - //DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget,1.0)); - } - - //Make reflex save - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget,nDC)) - { - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,6.0)); - - if(!GetIsImmune(oTarget,IMMUNITY_TYPE_MIND_SPELLS)) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDazed, oTarget,6.0)); - // FloatingTextStringOnCreature("no immune " , OBJECT_SELF, FALSE); - } - else - { - // FloatingTextStringOnCreature("immune " , OBJECT_SELF, FALSE); - - AssignCommand(oTarget,ClearAllActions(TRUE)); - AssignCommand(oTarget,ActionPlayAnimation(ANIMATION_LOOPING_PAUSE,1.0,6.0)); - DelayCommand(0.2,SetCommandable(FALSE,oTarget)); - DelayCommand(6.2,SetCommandable(TRUE,oTarget)); - } - } - } - - if (nMissiles>0) - DelayCommand(6.2,DarkBolt(oTarget,nMissiles,nDC,nMetaMagic)); - -} - - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nPenetr = nCasterLvl + SPGetPenetr(); - - int nMissiles = nCasterLvl/2; - float fDist = GetDistanceBetween(OBJECT_SELF, oTarget); - float fDelay = fDist/(3.0 * log(fDist) + 2.0); - float fDelay2, fTime; - int nCnt; - - effect eBolt = EffectBeam(VFX_BEAM_EVIL, OBJECT_SELF, BODY_NODE_HAND); - effect eMissile = EffectVisualEffect(VFX_BEAM_EVIL); - effect eVis = EffectVisualEffect(VFX_IMP_MAGBLUE); - effect eDazed=EffectDazed(); - - effect eVis2 = EffectVisualEffect(VFX_IMP_DAZED_S); - - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RAY_OF_ENFEEBLEMENT)); - //Limit missiles to 7 - if (nMissiles > 40) nMissiles = 40; - - //Make SR Check - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr)) - { - - //Roll damage - int nDam = d8(2); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDam = 16;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDam = nDam + nDam/2; //Damage/Healing is +50% - } - - fTime = fDelay; - fDelay2 += 0.1; - fTime += fDelay2; - - //Set damage effect - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oTarget, 1.0,FALSE); - - if(MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) - { - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0,FALSE)); - // DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget,1.0)); - } - - - //Make reflex save - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget,nDC)) - { - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,6.0)); - - if(!GetIsImmune(oTarget,IMMUNITY_TYPE_MIND_SPELLS)) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDazed, oTarget,6.0)); - // FloatingTextStringOnCreature("no immune " , OBJECT_SELF, FALSE); - } - else - { - // FloatingTextStringOnCreature("immune " , OBJECT_SELF, FALSE); - - AssignCommand(oTarget,ClearAllActions(TRUE)); - AssignCommand(oTarget,ActionPlayAnimation(ANIMATION_LOOPING_PAUSE,1.0,6.0)); - DelayCommand(0.2,SetCommandable(FALSE,oTarget)); - DelayCommand(6.2,SetCommandable(TRUE,oTarget)); - } - } - } - nMissiles--; - if (nMissiles>0) - DelayCommand(6.2,DarkBolt( oTarget,nMissiles,nDC,nMetaMagic)); - - PRCSetSchool(); - -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_deep_slumber.ncs b/_haks/poa_exp_spells/sp_deep_slumber.ncs deleted file mode 100644 index 24d275e3..00000000 Binary files a/_haks/poa_exp_spells/sp_deep_slumber.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_deep_slumber.nss b/_haks/poa_exp_spells/sp_deep_slumber.nss deleted file mode 100644 index 32310143..00000000 --- a/_haks/poa_exp_spells/sp_deep_slumber.nss +++ /dev/null @@ -1,161 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Deep Slumber -//:: FileName sp_deep_slumber.nss -//::////////////////////////////////////////////// -/**@file Deep Slumber -Enchantment (Compulsion) [Mind-Affecting] -Level: Brd 3, Sor/Wiz 3, Hexblade 3 -Range: Close (25 ft. + 5 ft./2 levels) -This spell functions like sleep, except that it affects 10 HD of creatures. - -**/ - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ENCHANTMENT); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget; - object oLowest; - effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20); - effect eSleep = EffectSleep(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eVis = EffectVisualEffect(VFX_IMP_SLEEP); - - effect eLink = EffectLinkEffects(eSleep, eMind); - eLink = EffectLinkEffects(eLink, eDur); - - // * Moved the linking for the ZZZZs into the later code - // * so that they won't appear if creature immune - - int bContinueLoop; - int nHD = 20; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCurrentHD; - int bAlreadyAffected; - int nMax = 19;// maximun hd creature affected - int nLow; - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nDuration = CasterLvl; - int nScaledDuration; - nDuration = 3 + nDuration; - int nPenetr = CasterLvl + SPGetPenetr(); - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation()); - string sSpellLocal = "BIOWARE_SPELL_LOCAL_SLEEP_" + ObjectToString(OBJECT_SELF); - //Enter Metamagic conditions - - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nHD = nHD + (nHD/2); //Damage/Healing is +50% - } - if ((nMetaMagic & METAMAGIC_EXTEND)) - { - nDuration = nDuration *2; //Duration is +100% - } - nDuration += 2; - //Get the first target in the spell area - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation()); - //If no valid targets exists ignore the loop - if (GetIsObjectValid(oTarget)) - { - bContinueLoop = TRUE; - } - // The above checks to see if there is at least one valid target. - while ((nHD > 0) && (bContinueLoop)) - { - nLow = nMax; - bContinueLoop = FALSE; - //Get the first creature in the spell area - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation()); - while (GetIsObjectValid(oTarget)) - { - //Make faction check to ignore allies - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) - && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT - && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) - { - //Get the local variable off the target and determined if the spell has already checked them. - bAlreadyAffected = GetLocalInt(oTarget, sSpellLocal); - if (!bAlreadyAffected) - { - //Get the current HD of the target creature - nCurrentHD = GetHitDice(oTarget); - //Check to see if the HD are lower than the current Lowest HD stored and that the - //HD of the monster are lower than the number of HD left to use up. - if(nCurrentHD < nLow - && nCurrentHD <= nHD - && (nCurrentHD < 5 || GetPRCSwitch(PRC_SLEEP_NO_HD_CAP))) - { - nLow = nCurrentHD; - oLowest = oTarget; - bContinueLoop = TRUE; - } - } - } - //Get the next target in the shape - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, PRCGetSpellTargetLocation()); - } - //Check to see if oLowest returned a valid object - if(oLowest != OBJECT_INVALID) - { - //Fire cast spell at event for the specified target - SignalEvent(oLowest, EventSpellCastAt(OBJECT_SELF, SPELL_DEEP_SLUMBER)); - //Make SR check - if (!PRCDoResistSpell(OBJECT_SELF, oLowest,nPenetr)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - //Make Fort save - if(!PRCMySavingThrow(SAVING_THROW_WILL, oLowest, (nDC), SAVING_THROW_TYPE_MIND_SPELLS)) - { - //SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oLowest); - if (GetIsImmune(oLowest, IMMUNITY_TYPE_SLEEP) == FALSE) - { - effect eLink2 = EffectLinkEffects(eLink, eVis); - nScaledDuration = PRCGetScaledDuration(nDuration, oLowest); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink2, oLowest, RoundsToSeconds(nScaledDuration)); - } - else - // * even though I am immune apply just the sleep effect for the immunity message - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, oLowest, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl); - } - - } - } - } - //Set a local int to make sure the creature is not used twice in the pass. Destroy that variable in - //.3 seconds to remove it from the creature - SetLocalInt(oLowest, sSpellLocal, TRUE); - DelayCommand(0.5, SetLocalInt(oLowest, sSpellLocal, FALSE)); - DelayCommand(0.5, DeleteLocalInt(oLowest, sSpellLocal)); - //Remove the HD of the creature from the total - nHD = nHD - GetHitDice(oLowest); - oLowest = OBJECT_INVALID; - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/sp_deflect.ncs b/_haks/poa_exp_spells/sp_deflect.ncs deleted file mode 100644 index f3ae976b..00000000 Binary files a/_haks/poa_exp_spells/sp_deflect.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_deflect.nss b/_haks/poa_exp_spells/sp_deflect.nss deleted file mode 100644 index e5d65c18..00000000 --- a/_haks/poa_exp_spells/sp_deflect.nss +++ /dev/null @@ -1,68 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Lesser Deflect -//:: FileName sp_deflect.nss -//::////////////////////////////////////////////// -/**@file Lesser Deflect -Abjuration [Force] -Level: Duskblade 1, sorcerer/wizard 1 -Components: V -Casting Time: 1 immediate action -Range: Personal -Duration: 1 round or until discharged - -You project a field of ivisible force, creating a -short-lived protective barrier. You gain a -deflection bonus to your AC against a single attack; -this bonus is equal to +1 per three caster levels -(maximum +5). - -**/ - -//:://///////////////////////////////////////////// -//:: Name Deflect -//:: FileName sp_deflect.nss -//::////////////////////////////////////////////// -/**@file Deflect -Abjuration [Force] -Level: Duskblade 2, sorcerer/wizard 2 -Components: V -Casting Time: 1 immediate action -Range: Personal -Duration: 1 round or until discharged - - -You project a field of ivisible force, creating a -short-lived protective barrier. You gain a -deflection bonus to your AC against a single attack; -this bonus is equal to 1/2 your caster level -(round down). - -**/ - -#include "prc_alterations" -#include "prc_inc_spells" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - - object oPC = OBJECT_SELF; - float fDur = RoundsToSeconds(1); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSpell = PRCGetSpellId(); - int nBonus = nSpell == SPELL_DEFLECT ? nCasterLvl/2: - PRCMin(20, (nCasterLvl/3)); - - PRCSignalSpellEvent(oPC, FALSE, nSpell, oPC); - - if(nMetaMagic & METAMAGIC_EXTEND) - fDur *= 2; - - effect eBonus = EffectACIncrease(AC_DEFLECTION_BONUS, nBonus); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBonus, oPC, fDur); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_dispell_tch.ncs b/_haks/poa_exp_spells/sp_dispell_tch.ncs deleted file mode 100644 index ff80b059..00000000 Binary files a/_haks/poa_exp_spells/sp_dispell_tch.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_dispell_tch.nss b/_haks/poa_exp_spells/sp_dispell_tch.nss deleted file mode 100644 index 811faeda..00000000 --- a/_haks/poa_exp_spells/sp_dispell_tch.nss +++ /dev/null @@ -1,95 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Dispelling Touch -//:: FileName sp_dispell_tch.nss -//::////////////////////////////////////////////// -/**@file Dispelling Touch -Abjuration -Level: Duskblade 3, sorcerer/wizard 2 -Components: V,S -Casting Time: 1 standard action -Range: Touch -Target: One touched creature, object, or spell - effect -Duration: Instantaneous -Saving Throw: None -Spell Resistance: No - -You can use dispelling touch to end an ongoing -spell that has been cast on a creature or object, -or a spell tha has a noticeable ongoing effect. You -mkae a dispel check (1d20 + your caster level, max -+10) against the spell effect with the highest -caster level. If that check fails, you make dispel -checks against progressively weaker spells until -you dispel one spell or you fail all your checks. -Magic items carried by a creature are not affected. -**/ - -/* - PRC_SPELL_EVENT_ATTACK is set when a - touch or ranged attack is used - -*/ - -#include "inc_dispel" -#include "prc_inc_sp_tch" -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int iTypeDispel = GetLocalInt(GetModule(),"BIODispel"); - // Dispel Magic is capped at caster level 10 - if(nCasterLevel > 20) - nCasterLevel = 20; - - effect eVis = EffectVisualEffect(VFX_IMP_BREACH); - effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL); - - int iAttackRoll = PRCDoMeleeTouchAttack(oTarget); - if(iAttackRoll) - { - if(GetIsObjectValid(oTarget)) - { - if(iTypeDispel) - spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact); - else - spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact); - } - } - - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - if(!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_disrpt_undead.ncs b/_haks/poa_exp_spells/sp_disrpt_undead.ncs deleted file mode 100644 index 30c6ae28..00000000 Binary files a/_haks/poa_exp_spells/sp_disrpt_undead.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_disrpt_undead.nss b/_haks/poa_exp_spells/sp_disrpt_undead.nss deleted file mode 100644 index 5a0cd5b8..00000000 --- a/_haks/poa_exp_spells/sp_disrpt_undead.nss +++ /dev/null @@ -1,127 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Disrupt Undead/Greater Disrupt Undead -//:: FileName sp_disrpt_undead.nss -//::////////////////////////////////////////////// -/**@file Disrupt Undead -Necromancy -Level: Sor/Wiz 0 -Components: V, S -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Effect: Ray -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -You direct a ray of positive energy. You must make a -ranged touch attack to hit, and if the ray hits an -undead creature, it deals 1d6 points of damage to it. - -Greater Disrupt Undead -Necromancy -Level: Sorcerer/wizard 3 -Components: V, S -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Effect: Ray -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -You must succeed on a ranged touch attack with the ray -to strike a target. This spell functions like disrupt -undead (PH 223), except that this ray deals 1d8 points -of damage per caster level to any undead, to a maximum -of 10d8. If the damage is sufficient to destroy the -first target, then you can redirect the ray to another -undead target within 15 feet of the first target. If -you make a successful ranged touch attack on the second -target, that target takes half of the damage rolled for -the first target. - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_sp_tch" - -void main() -{ - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nSpell = GetSpellId(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nBeam; - int nDam; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nTouch = PRCDoRangedTouchAttack(oTarget); - int nType = MyPRCGetRacialType(oTarget); - - if(nSpell == SPELL_DISRUPT_UNDEAD) - { - nBeam = VFX_BEAM_HOLY; - nDam = d6(1)+ (nCasterLvl/4); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 6+(nCasterLvl/4); - } - - if(nSpell == SPELL_GREATER_DISRUPT_UNDEAD) - { - nBeam = VFX_BEAM_BLACK; - nDam = d6(3)+ (nCasterLvl/3); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 18+ (nCasterLvl/3); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - - //Beam that acts accordingly - effect eVis = EffectBeam(nBeam, oPC, BODY_NODE_HAND, !nTouch); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - if(nTouch) - { - if(nType == RACIAL_TYPE_UNDEAD - || (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)) - { - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - if(nSpell == SPELL_GREATER_DISRUPT_UNDEAD) - { - //Get hp before damage - int nHP = GetCurrentHitPoints(oTarget); - - //Apply Damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_POSITIVE), oTarget); - - //if enough to kill target, bounce - if(nDam >= nHP) - { - location lLoc = GetLocation(oTarget); - object oTarget2 = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(15.0), lLoc, TRUE); - - while(GetIsObjectValid(oTarget2)) - { - //Undead, enemy, and not the original target - if((GetRacialType(oTarget2) == RACIAL_TYPE_UNDEAD || (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget2) && GetAlignmentGoodEvil(oTarget2) != ALIGNMENT_GOOD) - && GetIsEnemy(oTarget2, oPC) && (oTarget != oTarget2))) - { - //Black beam, origin chest of previous target - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectBeam(VFX_BEAM_BLACK, oTarget, BODY_NODE_CHEST), oTarget2); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam/2, DAMAGE_TYPE_POSITIVE), oTarget2); - break; - } - - oTarget2 = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(15.0), lLoc, TRUE); - } - } - } - else SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_POSITIVE), oTarget); - } - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_divprot.ncs b/_haks/poa_exp_spells/sp_divprot.ncs deleted file mode 100644 index 7cd7aff4..00000000 Binary files a/_haks/poa_exp_spells/sp_divprot.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_divprot.nss b/_haks/poa_exp_spells/sp_divprot.nss deleted file mode 100644 index 30b18224..00000000 --- a/_haks/poa_exp_spells/sp_divprot.nss +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Divine Protection - +1 to AC and saves to allies in a huge burst. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT); - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - // Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - - // Get the effective caster level. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - // Determine the save bonus. - int nBonus = 2 + (nCasterLvl / 6); - if (nBonus > 5) nBonus = 5; - - // Determine the spell's duration, taking metamagic feats into account. - float fDuration = PRCGetMetaMagicDuration(MinutesToSeconds(nCasterLvl)); - - // Declare the spell shape, size and the location. Capture the first target object in the shape. - // Cycle through the targets within the spell shape until an invalid object is captured. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - while (GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget, FALSE); - - PRCRemoveSpellEffects(GetSpellId(), OBJECT_SELF, oTarget); - - float fDelay = PRCGetSpellEffectDelay(lTarget, oTarget); - - // Apply the curse and vfx. - effect eCurse = EffectSavingThrowIncrease(SAVING_THROW_ALL, 1); - eCurse = EffectLinkEffects(eCurse, EffectACIncrease(1)); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCurse, oTarget, fDuration,TRUE,-1,nCasterLvl)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_AC_BONUS), oTarget)); - } - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_dmnd_spray.ncs b/_haks/poa_exp_spells/sp_dmnd_spray.ncs deleted file mode 100644 index a40744f3..00000000 Binary files a/_haks/poa_exp_spells/sp_dmnd_spray.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_dmnd_spray.nss b/_haks/poa_exp_spells/sp_dmnd_spray.nss deleted file mode 100644 index d92f7914..00000000 --- a/_haks/poa_exp_spells/sp_dmnd_spray.nss +++ /dev/null @@ -1,101 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Diamond Spray -//:: FileName sp_dmnd_spray -//::////////////////////////////////////////////// -/**@file Diamond Spray -Evocation [Good] -Level: Sanctified 4 -Components: V, S, M -Casting Time: 1 standard action -Range: 60 ft. -Area: Cone-shaped burst -Duration: Instantaneous -Saving Throw: Reflex half -Spell Resistance: Yes - -A blast of diamond-like shards springs from your -hand and extends outward in a glittering cone. The -cone dazzles evil creatures in the area for 2d6 -rounds. The spell also deals 1d6 points of damage -per caster level (maximum 10d6). The damage -affects only evil creatures. A successful Reflex -save reduces the damage by half but does not -negate the dazzling effect. - -Material Component: Diamond dust worth at least 100 gp. - -Author: Tenjac -Created: 6/11/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDC; - int nMetaMagic = PRCGetMetaMagicFeat(); - location lLoc = PRCGetSpellTargetLocation(); - object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 18.28f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - float fDur = RoundsToSeconds(d6(2)); - - //make sure it's not the PC - if(oTarget == oPC) - { - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 18.28f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - - while(GetIsObjectValid(oTarget)) - { - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - int nDam = d6(PRCMin(nCasterLvl,40)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (PRCMin(nCasterLvl, 40)); - } - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) - { - nDC = PRCGetSaveDC(oTarget, oPC); - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC)) - { - nDam = nDam/2; - } - - //Apply appropriate damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - - //Dazzled = -1 to Attack, Spot, and search - effect eDazzle = EffectLinkEffects(EffectDazzle(), EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE)); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDazzle, oTarget, fDur); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 18.28f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - - //Sanctified spells get mandatory 10 pt good adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE); - - //SPGoodShift(oPC); - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_doom_scarab.ncs b/_haks/poa_exp_spells/sp_doom_scarab.ncs deleted file mode 100644 index 3af20047..00000000 Binary files a/_haks/poa_exp_spells/sp_doom_scarab.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_doom_scarab.nss b/_haks/poa_exp_spells/sp_doom_scarab.nss deleted file mode 100644 index 6b2fac22..00000000 --- a/_haks/poa_exp_spells/sp_doom_scarab.nss +++ /dev/null @@ -1,108 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Doom Scarabs -//:: FileName sp_doom_scarab.nss -//::////////////////////////////////////////////// -/**@file Doom Scarabs -Conjuration/Necromancy -Level: Duskblade 3, sorcerer/wizard 4 -Components: V,S -Casting Time: 1 standard action -Range: 60ft -Area: Cone-shaped burst -Duration: Instantaneous -Saving Throw: Will half -Spell Resistance: See text - -This spell has two effects. It deals 1d6 points of -damage per two caster levels (maximum 10d6) to all -creatures in the area. Spell resistance does not -apply to this damage. However, spell resistance -does apply to the spell's secondary effect. If you -ovecome a creature's spell resistance, you gain 1d4 -temporary hit points as the scarabs feast on the -creature's arcane energy and bleed it back into you. -You gain these temporary hit points for each creature -whose spell resistance you overcome. You never gain -temporary hit points from creatures that do not have -spell resistance. - -The temporary hit points gained from this spell last -for up to 1 hour. - -**/ - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - object oPC = OBJECT_SELF; - location lLoc = PRCGetSpellTargetLocation(); - object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 18.29f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nBonusDice; - int nDam; - int nDC; - float fDur = HoursToSeconds(1); - - //don't target the caster moron - if(oTarget == oPC) - { - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 18.29f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - while(GetIsObjectValid(oTarget)) - { - nDam = d6(PRCMin(nCasterLvl/2, 40)); - nDC = PRCGetSaveDC(oTarget, oPC); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (PRCMin(nCasterLvl/2, 40)); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) - { - nDam = (nDam/2); - - if(GetHasMettle(oTarget, SAVING_THROW_WILL)) - { - PRCSetSchool(); - return; - } - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - nBonusDice++; - } - - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 18.29f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - - effect eBonus = EffectTemporaryHitpoints(d4(nBonusDice)); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBonus, oPC, fDur); - - PRCSetSchool(); -} - - - \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_elemstrike.ncs b/_haks/poa_exp_spells/sp_elemstrike.ncs deleted file mode 100644 index 60f622c0..00000000 Binary files a/_haks/poa_exp_spells/sp_elemstrike.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_elemstrike.nss b/_haks/poa_exp_spells/sp_elemstrike.nss deleted file mode 100644 index 9dcaa3d6..00000000 --- a/_haks/poa_exp_spells/sp_elemstrike.nss +++ /dev/null @@ -1,149 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Elemental Strike -//:: sp_elemstrike.nss -//::////////////////////////////////////////////// -/* -Evocation [see text] -Level: Clr 5, Drd 4, Fiery Wrath 5, Tmp 5 -Components: V, S, DF -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Area: Cylinder (10-ft. radius, 40 ft. high) -Duration: Instantaneous -Saving Throw: Reflex half -Spell Resistance: Yes - -A column of divine and elemental energy shoots downward -from the point you designate, striking those caught -beneath it with the fury of your element. - -An elemental strike produces a vertical column. The -spell deals 1d6 points of damage per caster level -(maximum 15d6). Half the damage is energy damage, but -the other half results directly from divine power and is -therefore not subject to being reduced by resistance to -energy–based attacks. The type of energy damage, as well -as the energy descriptor of the spell, is chosen at the time -of casting. Clerics must choose the energy type that -corresponds to their patron element. - -Air: Sonic -Earth: Acid -Fire: Fire -Magma: Fire -Rain: Electricity -Silt: Acid -Sun: Fire -Water: Cold - -This spell’s subtype is the same as the type of energy -you cast. - -Note: This spell replaces the flame strike spell from the -Player’s Handbook. -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - int nSpellID = PRCGetSpellId(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nDice = PRCMin(40, nCasterLvl); - int nPenter = nCasterLvl + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamageType, nImpVfx, nDamage, nDamage2; - effect eStrike; - - switch(nSpellID) - { - case SPELL_ELEMENTAL_STRIKE_ACID:{ - nDamageType = DAMAGE_TYPE_ACID; - nImpVfx = VFX_IMP_ACID_S; - eStrike = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_ACID); - break;} - case SPELL_ELEMENTAL_STRIKE_COLD:{ - nDamageType = DAMAGE_TYPE_COLD; - nImpVfx = VFX_IMP_FROST_S; - eStrike = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_COLD); - break;} - case SPELL_ELEMENTAL_STRIKE_ELECRICITY:{ - nDamageType = DAMAGE_TYPE_ELECTRICAL; - nImpVfx = VFX_IMP_LIGHTNING_S; - eStrike = EffectVisualEffect(VFX_IMP_LIGHTNING_M); - break;} - case SPELL_ELEMENTAL_STRIKE_SONIC:{ - nDamageType = DAMAGE_TYPE_SONIC; - nImpVfx = VFX_IMP_SONIC; - eStrike = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_SONIC); - break;} - default:{ - nDamageType = DAMAGE_TYPE_FIRE; - nImpVfx = VFX_IMP_FLAME_S; - eStrike = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE); - break;} - } - - int EleDmg = ChangedElementalDamage(oCaster, nDamageType); - int nSaveType = ChangedSaveType(EleDmg); - effect eVis = EffectVisualEffect(nImpVfx); - effect eHoly; - effect eElem; - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, FALSE, OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE|OBJECT_TYPE_DOOR); - //Apply the location impact visual to the caster location instead of caster target creature. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, lTarget); - //Cycle through the targets within the spell shape until an invalid object is captured. - while(GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID)); - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(oCaster, oTarget, nPenter, 0.6)) - { - int nDC = PRCGetSaveDC(oTarget, oCaster); - nDamage = d6(nDice); - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 6 * nDice; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage += (nDamage/2); - // Acid Sheath adds +1 damage per die to acid descriptor spells - if (GetHasDescriptor(nSpellID, DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, oCaster)) - nDamage += nDice; - //Adjust the damage based on Reflex Save, Evasion and Improved Evasion - nDamage2 = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, (nDC), SAVING_THROW_TYPE_DIVINE); - nDamage = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, (nDC), nSaveType); - //Make a faction check so that only enemies receieve the full brunt of the damage. - if(!GetIsFriend(oTarget)) - { - eHoly = PRCEffectDamage(oTarget, nDamage2, DAMAGE_TYPE_DIVINE); - DelayCommand(0.6, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHoly, oTarget)); - } - // Apply effects to the currently selected target. - eElem = PRCEffectDamage(oTarget, nDamage, EleDmg); - if(nDamage > 0) - { - DelayCommand(0.6, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eElem, oTarget)); - DelayCommand(0.6, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, FALSE, OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE|OBJECT_TYPE_DOOR); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_energz_ptn.ncs b/_haks/poa_exp_spells/sp_energz_ptn.ncs deleted file mode 100644 index 4141761c..00000000 Binary files a/_haks/poa_exp_spells/sp_energz_ptn.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_energz_ptn.nss b/_haks/poa_exp_spells/sp_energz_ptn.nss deleted file mode 100644 index ead57c45..00000000 --- a/_haks/poa_exp_spells/sp_energz_ptn.nss +++ /dev/null @@ -1,145 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Energize Potion -//:: FileName sp_energz_ptn.nss -//::////////////////////////////////////////////// -/**@file Energize Potion -Transmutation -Level: Cleric 3, druid 3, sorc/wizard 2, Wrath 2 -Components: V,S,M -Casting Time: 1 standard action -Range: Close -Effect: 10ft radius -Duration: Instantaneous -Saving Throw: Reflex half -Spell Resistance: Yes - -This spell transforms a magic potion into a volatile -substance that can be hurled out to the specified -range. The spell destroys the potion and releases -a 10-foot-radius burst of energy at the point of -impact. The caster must specify the energy type -(acid, cold, electricity, fire, or sonic) when the -spell is cast. - -The potion deals 1d6 points of damage (of the -appropriate energy type) per spell level of the -potion (maximum 3d6). For example, a potion of -displacement transformed by this spell deals 3d6 -points of damage. An energized potion set to deal -fire damage ignites combustibles within the burst -radius. - -Author: Tenjac -Created: 7/6/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - object oPC = OBJECT_SELF; - object oPotion = PRCGetSpellTargetObject(); - int nSpell = PRCGetSpellId(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDC = GetSpellSaveDC(); - string sDamageType; - - if(GetBaseItemType(oPotion) != BASE_ITEM_POTIONS) - { - FloatingTextStringOnCreature("Invalid item type.", oPC, FALSE); - return; - } - - //Get spell level - int nLevel = 0; //define it outside the loop - itemproperty ipTest = GetFirstItemProperty(oPotion); - - while(GetIsItemPropertyValid(ipTest)) - { - if(GetItemPropertyType(ipTest) == ITEM_PROPERTY_CAST_SPELL) - { - //Get row - int nRow = GetItemPropertySubType(ipTest); - - //Get spell level - nLevel = StringToInt(Get2DACache("iprp_spells", "InnateLvl", nRow)); - if(DEBUG) DoDebug("Spell level read as: " + IntToString(nLevel)); - - //no need to check rest of the ips - break; - } - ipTest = GetNextItemProperty(oPotion); - } - - //Remove potion being converted - int nStack = GetItemStackSize(oPotion); - - if(nStack > 1) SetItemStackSize(oPotion, (nStack - 1)); - - else DestroyObject(oPotion); - - //Create the grenade - object oGrenade = CreateItemOnObject("prc_it_enrgpot", oPC, 1); - - if(nSpell == SPELL_ENERGIZE_POTION_ACID) - { - SetLocalInt(oGrenade, "PRC_GrenadeDamageType", DAMAGE_TYPE_ACID); - SetLocalInt(oGrenade, "PRC_EnergizedPotionSave", SAVING_THROW_TYPE_ACID); - sDamageType = "Acid"; - } - - else if(nSpell == SPELL_ENERGIZE_POTION_COLD) - { - SetLocalInt(oGrenade, "PRC_GrenadeDamageType", DAMAGE_TYPE_COLD); - SetLocalInt(oGrenade, "PRC_EnergizedPotionSave", SAVING_THROW_TYPE_COLD); - sDamageType = "Cold"; - } - - else if(nSpell == SPELL_ENERGIZE_POTION_ELECTRICITY) - { - SetLocalInt(oGrenade, "PRC_GrenadeDamageType", DAMAGE_TYPE_ELECTRICAL); - SetLocalInt(oGrenade, "PRC_EnergizedPotionSave", SAVING_THROW_TYPE_ELECTRICITY); - sDamageType = "Electrical"; - } - - else if(nSpell == SPELL_ENERGIZE_POTION_FIRE) - { - SetLocalInt(oGrenade, "PRC_GrenadeDamageType", DAMAGE_TYPE_FIRE); - SetLocalInt(oGrenade, "PRC_EnergizedPotionSave", SAVING_THROW_TYPE_FIRE); - sDamageType = "Fire"; - } - - else if(nSpell == SPELL_ENERGIZE_POTION_SONIC) - { - SetLocalInt(oGrenade, "PRC_GrenadeDamageType", DAMAGE_TYPE_SONIC); - SetLocalInt(oGrenade, "PRC_EnergizedPotionSave", SAVING_THROW_TYPE_SONIC); - sDamageType = "Sonic"; - } - nLevel = PRCMin(20, nLevel); - SetLocalInt(oGrenade, "PRC_GrenadeLevel", nLevel); - SetLocalInt(oGrenade, "PRC_EnPotSaveDC", nDC); - - string sStrength; - - //Get strength string - switch(nLevel) - { - case 0: break; - - case 1: sStrength = "Weak"; - break; - case 2: sStrength = "Moderate"; - break; - case 3: sStrength = "Strong"; - break; - } - - SetName(oGrenade, sStrength + " " + "Energized" + " " + sDamageType + " " + "Potion"); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_exalt_fury.ncs b/_haks/poa_exp_spells/sp_exalt_fury.ncs deleted file mode 100644 index 90001cd7..00000000 Binary files a/_haks/poa_exp_spells/sp_exalt_fury.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_exalt_fury.nss b/_haks/poa_exp_spells/sp_exalt_fury.nss deleted file mode 100644 index 2520c356..00000000 --- a/_haks/poa_exp_spells/sp_exalt_fury.nss +++ /dev/null @@ -1,83 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Exalted Fury -//:: FileName sp_exalt_fury.nss -//::////////////////////////////////////////////// -/**@file Exalted Fury -Evocation [Good] -Level: Sanctified 9 -Components: V, Sacrifice -Casting Time: 1 standard action -Range: 40 ft. -Area: 40-ft. radius burst, centered on you -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -Uttering a single, awesomely powerful syllable of -the Words of Creation, your body erupts in the same -holy power that shaped the universe at its birth. -All evil creatures within the area take damage equal -to your current hit points +50. - -Sacrifice: You die. You can be raised or resurrected -normally. - -Author: Tenjac -Created: -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - int nMetaMagic = PRCGetMetaMagicFeat(); - location lLoc = PRCGetSpellTargetLocation(); - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 12.19f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - effect eVisLink = EffectLinkEffects(EffectVisualEffect(VFX_FNF_STRIKE_HOLY), EffectVisualEffect(VFX_FNF_SCREEN_BUMP)); - eVisLink = EffectLinkEffects(eVisLink, EffectVisualEffect(VFX_FNF_SUNBEAM)); - int nCasterLvl = PRCGetCasterLevel(oPC); - - //Damage = Hitpoints + 50 - int nDam = (GetCurrentHitPoints(oPC) + 50 + nCasterLvl); - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //You die, make it spectacular - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisLink, oPC); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(TRUE), oPC); - - //Loop - while(GetIsObjectValid(oTarget)) - { - //only looking for evil - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) - { - //SR - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl + SPGetPenetr())) - { - //Hit 'em - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - } - } - - //cycle - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 12.19f, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - - //Sanctified spells get mandatory 10 pt good adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE); - - //SPGoodShift(oPC); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_exaltd_raim.ncs b/_haks/poa_exp_spells/sp_exaltd_raim.ncs deleted file mode 100644 index 57507a46..00000000 Binary files a/_haks/poa_exp_spells/sp_exaltd_raim.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_exaltd_raim.nss b/_haks/poa_exp_spells/sp_exaltd_raim.nss deleted file mode 100644 index ac17c6cd..00000000 --- a/_haks/poa_exp_spells/sp_exaltd_raim.nss +++ /dev/null @@ -1,140 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Exalted Raiment -//:: FileName sp_exaltd_raim.nss -//::////////////////////////////////////////////// -/**@file Exalted Raiment -Abjuration -Level: Sanctified 6 -Components: V, DF, Sacrifice -Casting Time: 1 standard action -Range: Touch -Target: Robe, garment, or outfit touched -Duration: 1 minute/level -Saving Throw: Will negates (harmless, object) -Spell Resistance: Yes (harmless, object) - -You imbue a robe, priestly garment, or outfit of -regular clothing with divine power. The spell bestows -the following effects for the duration: - - - +1 sacred bonus to AC per five caster levels - (max +4 at 20th level) - - - Damage reduction 10/evil - - - Spell resistance 5 + 1/caster level (max SR 25 - at 20th level - - - Reduces ability damage due to spell casting by 1, - to a minimum of 1 point (but does not reduce the - sacrifice cost of this spell). - - Sacrifice: 1d4 points of Strength damage - -Author: Tenjac -Created: 6/28/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - - - -#include "prc_inc_spells" -#include "prc_ip_srcost.nss" - -int GetERSpellResistance(int nCasterLvl) -{ - int nSRBonus = PRCMin(nCasterLvl, 20); - int nIPConst; - - switch(nSRBonus) - { - case 0: break; - case 1: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_6; break; - case 2: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_7; break; - case 3: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_8; break; - case 4: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_9; break; - case 5: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_10; break; - case 6: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_11; break; - case 7: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_12; break; - case 8: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_13; break; - case 9: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_14; break; - case 10: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_15; break; - case 11: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_16; break; - case 12: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_17; break; - case 13: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_18; break; - case 14: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_19; break; - case 15: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_20; break; - case 16: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_21; break; - case 17: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_22; break; - case 18: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_23; break; - case 19: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_24; break; - case 20: nIPConst = IP_CONST_SPELLRESISTANCEBONUS_25; break; - } - - return nIPConst; -} - -void main() -{ - object oPC = OBJECT_SELF; - object oMyArmor = IPGetTargetedOrEquippedArmor(FALSE); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nSR = GetERSpellResistance(nCasterLvl); - int nArmor = PRCMin(nCasterLvl / 5, 8); - float fDur = (60.0f * nCasterLvl); - int nMetaMagic = PRCGetMetaMagicFeat(); - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - //check to make sure it has no AC - int nBaseAC = GetBaseAC(oMyArmor); - int nBonusAC = GetACBonus(oMyArmor); - int nLevel = GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION); - - if(nLevel > 0) - { - nBonusAC += nLevel; - } - - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - itemproperty ipArmor = ItemPropertyACBonus(nBonusAC += nArmor); - itemproperty ipDR = ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_2, IP_CONST_DAMAGESOAK_10_HP); - itemproperty ipSR = ItemPropertyBonusSpellResistance(nSR); - - //object is valid but has no AC value (clothes, robes, etc). - if((GetIsObjectValid(oMyArmor))) - { - if(nBaseAC < 1) - { - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SUPER_HEROISM), oPC); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oMyArmor, fDur); - IPSafeAddItemProperty(oMyArmor, ipArmor, fDur); - IPSafeAddItemProperty(oMyArmor, ipDR, fDur); - IPSafeAddItemProperty(oMyArmor, ipSR, fDur); - //SetLocalInt(oMyArmor, "PRC_Has_Exalted_Raiment", 1); - //DelayCommand(fDur, DeleteLocalInt(oMyArmor, "PRC_Has_Exalted_Raiment")); - } - else - { - SendMessageToPC(oPC, "Invalid item: Base AC > 0"); - return; - } - } - else - { - SendMessageToPC(oPC, "Target creature has no armor!"); - return; - } - - //Sanctified spells get mandatory 10 pt good adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE); - - //SPGoodShift(oPC); - - DoCorruptionCost(oPC, ABILITY_STRENGTH, d4(1), 0); - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_extr_wtrele.ncs b/_haks/poa_exp_spells/sp_extr_wtrele.ncs deleted file mode 100644 index 7dfa98e4..00000000 Binary files a/_haks/poa_exp_spells/sp_extr_wtrele.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_extr_wtrele.nss b/_haks/poa_exp_spells/sp_extr_wtrele.nss deleted file mode 100644 index 3d44586a..00000000 --- a/_haks/poa_exp_spells/sp_extr_wtrele.nss +++ /dev/null @@ -1,120 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Extract Water Elemental -//:: FileName sp_extr_wtrele.nss -//::////////////////////////////////////////////// -/**@file Extract Water Elemental -Transmutation [Water] -Level: Druid 6, sorcerer/wizard 6 -Components: V, S -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./level) -Target: One living creature -Duration: Instantaneous -Saving Throw: Fortitude half -Spell Resistance: Yes - -This brutal spell causes the targeted -creature to dehydrate horribly as the -moisture in its body is forcibly extracted -through its eyes, nostrils, mouth, and -pores. This deals 1d6 points of damage -per caster level (maximum 20d6), or -half damage on a successful Fortitude -save. If the targeted creature is slain -by this spell, the extracted moisture is -transformed into a water elemental of -a size equal to the slain creature (up to -Huge). The water elemental is under -your control, as if you summoned it, -and disappears after 1 minute. - -Author: Tenjac -Created: 6/28/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -void SummonElemental(object oTarget, object oPC); - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDam = d6(PRCMin(nCasterLvl, 40)); - int nSaveDC = PRCGetSaveDC(oTarget, oPC); - int nType = MyPRCGetRacialType(oTarget); - - if(!PRCGetIsAliveCreature(oTarget)) - - { - SendMessageToPC(oPC, "This spell must be cast on a living target"); - PRCSetSchool(); - return; - } - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6*(PRCMin(nCasterLvl, 40)); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //SR check - if(!PRCDoResistSpell(oPC, oTarget, (nCasterLvl + SPGetPenetr()))) - { - //VFX - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PULSE_WATER), oTarget); - - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_SPELL)) - { - nDam = nDam/2; - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - - if(GetIsDead(oTarget)) - { - SummonElemental(oTarget, oPC); - } - } - PRCSetSchool(); -} - -void SummonElemental(object oTarget, object oPC) -{ - location lLoc = GetLocation(oTarget); - int nSize = GetCreatureSize(oTarget); - string sResref; - - if(nSize == CREATURE_SIZE_HUGE) sResref = "nw_watergreat"; - - else if (nSize == CREATURE_SIZE_LARGE) sResref = "nw_waterhuge"; - - else if (nSize == CREATURE_SIZE_MEDIUM) sResref = "nw_water"; - - else if (nSize == CREATURE_SIZE_SMALL) sResref = "nw_water"; - - else if (nSize == CREATURE_SIZE_TINY) sResref = "nw_water"; - - else - { - SendMessageToPC(oPC, "Creature Size Invalid"); - return; - } - - MultisummonPreSummon(); - - effect eSummon = EffectSummonCreature(sResref, VFX_FNF_SUMMON_EPIC_UNDEAD); - ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, lLoc, 60.0f); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_false_life.ncs b/_haks/poa_exp_spells/sp_false_life.ncs deleted file mode 100644 index 75799419..00000000 Binary files a/_haks/poa_exp_spells/sp_false_life.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_false_life.nss b/_haks/poa_exp_spells/sp_false_life.nss deleted file mode 100644 index 9ba84858..00000000 --- a/_haks/poa_exp_spells/sp_false_life.nss +++ /dev/null @@ -1,61 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name False Life -//:: FileName sp_false_life.nss -//::////////////////////////////////////////////// -/**@file False Life -Necromancy -Level: Sor/Wiz 2, Hexblade 2 -Components: V, S, M -Casting Time: 1 standard action -Range: Personal -Target: You -Duration: 1 hour/level or until discharged; see text - -You harness the power of unlife to grant yourself a -limited ability to avoid death. While this spell is -in effect, you gain temporary hit points equal to -1d10 +1 per caster level (maximum +10). - -Material Component: A small amount of alcohol or -distilled spirits, which you use to trace certain -sigils on your body during casting. These sigils -cannot be seen once the alcohol or spirits evaporate. - -**/ - -#include "prc_alterations" -#include "prc_inc_spells" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - object oPC = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - float fDur = HoursToSeconds(nCasterLvl); - if(nMetaMagic & METAMAGIC_EXTEND) - fDur *= 2; - - int nBonus = d10(1) + (PRCMin(20, nCasterLvl)); - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nBonus = 10 + (PRCMin(20, nCasterLvl)); - if(nMetaMagic & METAMAGIC_EMPOWER) - nBonus += (nBonus/2); - - PRCRemoveEffectsFromSpell(oPC, SPELL_FALSE_LIFE); - - PRCSignalSpellEvent(oPC, FALSE, SPELL_FALSE_LIFE, oPC); - - effect eHP = EffectTemporaryHitpoints(nBonus); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eLink = EffectLinkEffects(eHP, eDur); - effect eVis = EffectVisualEffect(VFX_IMP_HEAD_EVIL); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, fDur, TRUE, SPELL_FALSE_LIFE, nCasterLvl, oPC); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC); - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_fester_death.ncs b/_haks/poa_exp_spells/sp_fester_death.ncs deleted file mode 100644 index f14f9765..00000000 Binary files a/_haks/poa_exp_spells/sp_fester_death.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_fester_death.nss b/_haks/poa_exp_spells/sp_fester_death.nss deleted file mode 100644 index fa82c027..00000000 --- a/_haks/poa_exp_spells/sp_fester_death.nss +++ /dev/null @@ -1,91 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Song of Festering Death -//:: FileName sp_fester_death.nss -//::////////////////////////////////////////////// -/**@file Song of Festering Death -Evocation [Evil] -Level: Brd 2 -Components: V -Casting Time: 1 action -Range: Close (25 ft. + 5 ft./2 levels) -Target: One living creature -Duration: Concentration -Saving Throw: Fortitude negates -Spell Resistance: Yes - -The caster sings a wailing ululation, requiring a -successful Perform (singing) check (DC 20). If the -Perform check succeeds and the target fails a -Fortitude saving throw, the subject's flesh -bubbles and festers into pestilent blobs, dealing -the subject 2d6 points of damage each round. If the -subject dies, she bursts with a sickening pop as -steamy gore spills onto the ground. - -Author: Tenjac -Created: 3/26/05 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void FesterLoop(object oTarget, int nConc, int nHP) -{ - if (nConc == FALSE) - { - return; - } - - int nDam = d6(20); - nHP = GetCurrentHitPoints(oTarget); - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - - if(nDam > nHP) - { - //esplode! - DeathlessFrenzyCheck(oTarget); - effect eDeath = EffectDeath(TRUE, TRUE); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - } - else - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } - - //Loop - DelayCommand(6.0f, FesterLoop(oTarget, nConc, nHP)); - -} - - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - // Run the spellhook. - if (!X2PreSpellCastCode()) return; - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nConc = TRUE; - int nDC = PRCGetSaveDC(oTarget, oPC); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nHP = GetCurrentHitPoints(oTarget); - - //Check for skill - if(GetIsSkillSuccessful(oPC, SKILL_PERFORM, 20) && PRCGetIsAliveCreature(oTarget)) - { - //Spell Resist - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL, oPC, 1.0)) - { - FesterLoop(oTarget, nConc, nHP); - } - } - } - - //SPEvilShift(oPC); - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_fire_trapA.ncs b/_haks/poa_exp_spells/sp_fire_trapA.ncs deleted file mode 100644 index 3360dd38..00000000 Binary files a/_haks/poa_exp_spells/sp_fire_trapA.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_fire_trapA.nss b/_haks/poa_exp_spells/sp_fire_trapA.nss deleted file mode 100644 index 5e97ea1f..00000000 --- a/_haks/poa_exp_spells/sp_fire_trapA.nss +++ /dev/null @@ -1,107 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name -//:: FileName sp_.nss -//::////////////////////////////////////////////// -/**@file Fire Trap -Abjuration [Fire] -Level: Drd 2, Sor/Wiz 4 -Components: V, S, M -Casting Time: 10 minutes -Range: Touch -Target: Area -Duration: Permanent until discharged (D) -Saving Throw: Reflex half; see text -Spell Resistance: Yes - -Fire trap creates a fiery explosion when an intruder -enters the area that the trap protects. - -When casting fire trap, you select a point as the spell’s -center. When someone other than you gets too close to that -point, a fiery explosion fills the area within a 5-foot radius around -the spell’s center. The flames deal 1d4 points of fire damage +1 -point per caster level (maximum +20). - -An unsuccessful dispel magic spell does not detonate the -spell. - -Underwater, this ward deals half damage and creates a -large cloud of steam. - -Material Component: A half-pound of gold dust (cost 25 gp) -sprinkled on the warded object. - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - object oTarget = GetEnteringObject(); - object oCaster = GetAreaOfEffectCreator(); - location lTarget = GetLocation(OBJECT_SELF); - int nDam; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - if(nCasterLvl > 40) nCasterLvl = 40; - - int nFire = GetLocalInt(OBJECT_SELF, "PRC_SPELL_FIRE_TRAP"); - - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE); - - effect eDam; - effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL); - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - //Check the faction of the entering object to make sure the entering object is not in the casters faction - if(nFire == 0) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - SetLocalInt(OBJECT_SELF, "PRC_SPELL_FIRE_TRAP",TRUE); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); - //Cycle through the targets in the explosion area - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_FIRE_TRAP)); - //Make SR check - if(!PRCDoResistSpell(oCaster, oTarget,nCasterLvl + SPGetPenetr())) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - nDam = d4(1) + nCasterLvl; - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDam = 4 + nCasterLvl; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) nDam +=(nDam/2); - - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Change damage according to Reflex, Evasion and Improved Evasion - nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nDC, SAVING_THROW_TYPE_FIRE, GetAreaOfEffectCreator()); - //Set up the damage effect - eDam = PRCEffectDamage(oTarget, nDam, EleDmg); - if(nDam > 0) - { - //Apply VFX impact and damage effect - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - DelayCommand(0.01, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - } - } - } - //Get next target in the sequence - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - DestroyObject(OBJECT_SELF, 1.0); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_fireburst.ncs b/_haks/poa_exp_spells/sp_fireburst.ncs deleted file mode 100644 index ecb522a0..00000000 Binary files a/_haks/poa_exp_spells/sp_fireburst.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_fireburst.nss b/_haks/poa_exp_spells/sp_fireburst.nss deleted file mode 100644 index c80c9f47..00000000 --- a/_haks/poa_exp_spells/sp_fireburst.nss +++ /dev/null @@ -1,24 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Firestorm - Burst of fire centered on the caster doing 1d8/lvl, -// max 5d8 -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "spinc_burst" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - // Get the number of damage dice. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nDice = nCasterLvl; - if (nDice > 20) nDice = 20; - - DoBurst (nCasterLvl,8, 0, nDice, VFX_IMP_FLAME_M, VFX_IMP_FLAME_S, 2.0f, - DAMAGE_TYPE_FIRE, DAMAGE_TYPE_FIRE, SAVING_THROW_TYPE_FIRE, TRUE); -} diff --git a/_haks/poa_exp_spells/sp_flesh_armor.ncs b/_haks/poa_exp_spells/sp_flesh_armor.ncs deleted file mode 100644 index 8631c82f..00000000 Binary files a/_haks/poa_exp_spells/sp_flesh_armor.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_flesh_armor.nss b/_haks/poa_exp_spells/sp_flesh_armor.nss deleted file mode 100644 index 29ef6c93..00000000 --- a/_haks/poa_exp_spells/sp_flesh_armor.nss +++ /dev/null @@ -1,78 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Flesh Armor -//:: FileName sp_flesh_armor.nss -//::////////////////////////////////////////////// -/**@file Flesh Armor -Abjuration [Evil] -Level: Asn 4 -Components: V, S, M, F -Casting Time: 1 action -Range: Personal -Target: Caster -Duration: 10 minutes/level or until discharged - - Prior to casting flesh armor, the caster flays the - skin from a creature of his size and lays it upon - his own flesh, wearing it like clothing or armor. - Once the caster casts flesh armor, his skin develops - resistance to blows, cuts, stabs, and slashes. The - caster gains damage reduction 10/+1. Once the spell - has prevented a total of 5 points of damage per - caster level (maximum 50 points), it is discharged, - and the skin slowly rots, shedding in patches like - the skin of a molting snake. - - Material Component: A bit of flesh torn from - the caster's body during the casting (dealing 1 point - of damage). - - Focus: The entire freshly harvested skin of another - creature of the caster's size. - -Author: Tenjac -Created: 05/05/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - object oPC = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oPC); - float fDur= (600.0f * nCasterLvl); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nAmount = PRCMin(50 + (nCasterLvl/2), (5 * nCasterLvl)); - effect eDR = EffectDamageReduction(10 + (nCasterLvl/2), DAMAGE_POWER_PLUS_ONE, nAmount); - - //placeholder VFX - effect eVis = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - - //Spellhook - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - - //Meta Magic - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur = (fDur * 2); - } - - //Link and Apply - - effect eLink = EffectLinkEffects(eDR, eVis); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, fDur); - - //SPEvilShift(oPC); - - PRCSetSchool(); - } - - - - - - \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_flesh_rip.ncs b/_haks/poa_exp_spells/sp_flesh_rip.ncs deleted file mode 100644 index de9d9723..00000000 Binary files a/_haks/poa_exp_spells/sp_flesh_rip.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_flesh_rip.nss b/_haks/poa_exp_spells/sp_flesh_rip.nss deleted file mode 100644 index 4a3e1c2d..00000000 --- a/_haks/poa_exp_spells/sp_flesh_rip.nss +++ /dev/null @@ -1,105 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Flesh Ripper -//:: FileName sp_flesh_rip -//::////////////////////////////////////////////// -/**@file Flesh Ripper -Evocation [Evil] -Level: Clr 3, Mortal Hunter 3 -Components: V, S, Undead, Fiend -Casting Time: 1 action -Range: Close (25 ft. + 5 ft./2 levels) -Target: One living creature -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -The caster evokes pure evil power in the form of a -black claw that flies at the target. If a ranged -touch attack roll succeeds, the claw deals 1d8 -points of damage per caster level (maximum 10d8). -On a critical hit, in addition to dealing double -damage, the wound bleeds for 1 point of damage per -round until it is magically healed. - -Author: Tenjac -Created: -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_sp_tch" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Spellhook - if (!X2PreSpellCastCode()) return; - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nType = MyPRCGetRacialType(oPC); - int nType2 = MyPRCGetRacialType(oTarget); - int nDice = PRCMin(20, nCasterLvl); - - PRCSignalSpellEvent(oTarget,TRUE, SPELL_FLESH_RIPPER, oPC); - - //Caster must be undead. If not, hit 'em with alignment change anyway. - //Try reading the description of the spell moron. =P - - if(nType == RACIAL_TYPE_UNDEAD) - { - //check for living target - if(PRCGetIsAliveCreature(oTarget)) - { - //Check spell resistance - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - int nDam = d8(nDice); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = (8 * nDice); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //Non-descript - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - - //VFX - effect eVis = EffectBeam(VFX_BEAM_BLACK, oPC, BODY_NODE_HAND); - - //Make touch attack - int nTouch = PRCDoRangedTouchAttack(oTarget); - - if(nTouch > 0) - { - //Apply VFX - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - //Apply damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } - - if(nTouch = 2) - { - //Apply damage - nDam += nDam; - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - - //Wounding - effect eWound = EffectHitPointChangeWhenDying(1.0f); - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eWound, oTarget); - } - } - } - } - //SPEvilShift(oPC); - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_forceblast.ncs b/_haks/poa_exp_spells/sp_forceblast.ncs deleted file mode 100644 index 613444f9..00000000 Binary files a/_haks/poa_exp_spells/sp_forceblast.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_forceblast.nss b/_haks/poa_exp_spells/sp_forceblast.nss deleted file mode 100644 index 6294221c..00000000 --- a/_haks/poa_exp_spells/sp_forceblast.nss +++ /dev/null @@ -1,17 +0,0 @@ -#include "prc_inc_spells" -#include "spinc_bolt" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - // Get the number of damage dice. - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - int nDice = nCasterLevel > 20 ? 20 : nCasterLevel; - - DoBolt (nCasterLevel,4, 0, nDice, VFX_BEAM_MIND, VFX_IMP_MAGBLUE, - DAMAGE_TYPE_MAGICAL, SAVING_THROW_TYPE_SPELL, - SPELL_SCHOOL_EVOCATION, TRUE, GetSpellId()); -} - diff --git a/_haks/poa_exp_spells/sp_forceorb.ncs b/_haks/poa_exp_spells/sp_forceorb.ncs deleted file mode 100644 index 523ef15e..00000000 Binary files a/_haks/poa_exp_spells/sp_forceorb.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_forceorb.nss b/_haks/poa_exp_spells/sp_forceorb.nss deleted file mode 100644 index 856e84a1..00000000 --- a/_haks/poa_exp_spells/sp_forceorb.nss +++ /dev/null @@ -1,77 +0,0 @@ -#include "prc_inc_spells" -#include "prc_add_spell_dc" -#include "prc_inc_sp_tch" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - object oCaster = OBJECT_SELF; - effect eVis = EffectVisualEffect(VFX_IMP_MAGBLUE); - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - int nSpellId = PRCGetSpellId(); - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLvl + SPGetPenetr(); - int nDice = nCasterLvl; - if (nDice > 40) nDice = 40; - - int nAtk = PRCDoRangedTouchAttack(oTarget, TRUE, oCaster); - if(nAtk) - { - //Make SR Check - if (!PRCDoResistSpell(oCaster, oTarget, nCasterLvl)) - { - effect eMissile = EffectVisualEffect(VFX_IMP_MIRV); - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - //Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget, TRUE, nSpellId); - - //Roll damage for each target - int nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_MAGICAL, nDice, 6); - // Succeeded on the save - if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oCaster))) - nDamage = nDamage/2; - - // Apply the damage and the damage visible effect to the target. - ApplyTouchAttackDamage(oCaster, oTarget, nAtk, nDamage, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } - else // If it misses, it becomes an AoE - { - location lTarget = PRCGetSpellTargetLocation(); - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellId)); - //Get the distance between the explosion and the target to calculate delay - float fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - if (!PRCDoResistSpell(oCaster, oTarget, nCasterLvl, fDelay)) - { - int nDamage = nDice * 2; - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget, oCaster)), SAVING_THROW_TYPE_SPELL); - if(nDamage > 0) - { - //Set the damage effect - effect eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL); - // Apply effects to the currently selected target. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - //This visual effect is applied to the target object not the location as above. This visual effect - //represents the flame that erupts on the target not on the ground. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_gfireburst.ncs b/_haks/poa_exp_spells/sp_gfireburst.ncs deleted file mode 100644 index a08d3fc9..00000000 Binary files a/_haks/poa_exp_spells/sp_gfireburst.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_gfireburst.nss b/_haks/poa_exp_spells/sp_gfireburst.nss deleted file mode 100644 index d63468c6..00000000 --- a/_haks/poa_exp_spells/sp_gfireburst.nss +++ /dev/null @@ -1,24 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Greater Firestorm - Burst of fire centered on the caster doing -// 1d8/lvl, max 15d8 -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "spinc_burst" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - // Get the number of damage dice. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nDice = nCasterLvl; - if (nDice > 40) nDice = 40; - - DoBurst (nCasterLvl,8, 0, nDice, VFX_FNF_FIREBALL, VFX_IMP_FLAME_M, 4.0f, - DAMAGE_TYPE_FIRE, DAMAGE_TYPE_FIRE, SAVING_THROW_TYPE_FIRE, TRUE); -} diff --git a/_haks/poa_exp_spells/sp_gheroism.ncs b/_haks/poa_exp_spells/sp_gheroism.ncs deleted file mode 100644 index a0e0622a..00000000 Binary files a/_haks/poa_exp_spells/sp_gheroism.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_gheroism.nss b/_haks/poa_exp_spells/sp_gheroism.nss deleted file mode 100644 index 9daae72c..00000000 --- a/_haks/poa_exp_spells/sp_gheroism.nss +++ /dev/null @@ -1,37 +0,0 @@ -#include "prc_inc_spells" -#include "prc_spell_const" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT); - - // Get the target and raise the spell cast event. - object oTarget = PRCGetSpellTargetObject(); - PRCSignalSpellEvent(oTarget, FALSE); - - if(GetHasSpellEffect(SPELL_HEROISM, oTarget)) - { - PRCRemoveSpellEffects(SPELL_HEROISM,OBJECT_SELF,OBJECT_SELF); - } - - // Determine the spell's duration, taking metamagic feats into account. - int nCasterlvl = PRCGetCasterLevel(); - float fDuration = PRCGetMetaMagicDuration(TenMinutesToSeconds(nCasterlvl)); - - // Create the chain of buffs to apply, including the vfx. - effect eBuff = EffectSavingThrowIncrease(SAVING_THROW_ALL, 4, SAVING_THROW_TYPE_ALL); - eBuff = EffectLinkEffects (eBuff, EffectAttackIncrease(4, ATTACK_BONUS_MISC)); - eBuff = EffectLinkEffects (eBuff, EffectSkillIncrease(SKILL_ALL_SKILLS, 4)); - eBuff = EffectLinkEffects (eBuff, EffectImmunity(IMMUNITY_TYPE_FEAR)); - //improperly removing gheroism when temp hp expire; fix by unlinking temp hp from other effect ~ Lockindal - effect eTempHP = EffectTemporaryHitpoints(nCasterlvl > 40 ? 40 : nCasterlvl); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBuff, oTarget, fDuration,TRUE,-1,nCasterlvl); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTempHP, oTarget, fDuration,TRUE,-1,nCasterlvl); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_RESTORATION), oTarget); - - PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT); -} diff --git a/_haks/poa_exp_spells/sp_gutwrench.ncs b/_haks/poa_exp_spells/sp_gutwrench.ncs deleted file mode 100644 index 280d71ad..00000000 Binary files a/_haks/poa_exp_spells/sp_gutwrench.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_gutwrench.nss b/_haks/poa_exp_spells/sp_gutwrench.nss deleted file mode 100644 index 3f360357..00000000 --- a/_haks/poa_exp_spells/sp_gutwrench.nss +++ /dev/null @@ -1,121 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Gutwrench -//:: FileName sp_gutwrench.nss -//::////////////////////////////////////////////// -/**@file Gutwrench -Necromancy [Evil, Death] -Level: Sor/Wiz 8 -Components: V, S, Undead -Casting Time: 1 action -Range: Close (25 ft. + 5 ft./2 levels) -Target: One living creature -Duration: Instantaneous -Saving Throw: Fortitude partial -Spell Resistance: Yes - -The innards of the target creature roil. If the -target fails its saving throw, its intestines burst -forth, killing it. The intestines fly toward the -caster and are absorbed into her form, granting her -4d6 temporary hit points and a +4 enhancement bonus -to Strength. If the target's save is successful, it -takes 10d6 points of damage instead. - -A creature with no discernible anatomy is unaffected -by this spell. - -Author: Tenjac -Created: 16.3.2006 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - //Spellhook - if (!X2PreSpellCastCode()) return; - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nTargetType = MyPRCGetRacialType(oTarget); - int nDC = PRCGetSaveDC(oTarget, oPC); - - PRCSignalSpellEvent(oTarget,TRUE, SPELL_GUTWRENCH, oPC); - - //Caster must be undead. If not, hit 'em with alignment change anyway. - //Try reading the description of the spell moron. =P - - if(MyPRCGetRacialType(oPC) == RACIAL_TYPE_UNDEAD) - { - if(nTargetType != RACIAL_TYPE_OOZE && - nTargetType != RACIAL_TYPE_CONSTRUCT && - nTargetType != RACIAL_TYPE_UNDEAD && - nTargetType != RACIAL_TYPE_ELEMENTAL) - - { - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl + SPGetPenetr())) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH)) - { - //define effects - effect eDeath = EffectDeath(); - effect eGut = EffectBeam(VFX_BEAM_SILENT_EVIL, oTarget, BODY_NODE_CHEST); - effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE); - effect eBonus = EffectAbilityIncrease(ABILITY_STRENGTH, 4); - effect eLink = EffectLinkEffects(eDeath, eGut); - - //Apply to target - DeathlessFrenzyCheck(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget); - - //PC - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBonus, oPC, HoursToSeconds(24)); - } - - //Otherwise, take 10d6 damage, be thankful, and RUN. - else - { - if(!GetHasMettle(oTarget, SAVING_THROW_FORT)) - { - int nDam = d6(10)+nCasterLvl; - - //evaluate metamagic - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 60+nCasterLvl; - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //define damage - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - - - //Apply damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } - } - } - } - } - else - { - FloatingTextStringOnCreature("Caster is not Undead! Spell failed.", oPC, FALSE); - } - - //SPEvilShift(oPC); - - PRCSetSchool(); -} - diff --git a/_haks/poa_exp_spells/sp_hailofstone.ncs b/_haks/poa_exp_spells/sp_hailofstone.ncs deleted file mode 100644 index c92e72c9..00000000 Binary files a/_haks/poa_exp_spells/sp_hailofstone.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_hailofstone.nss b/_haks/poa_exp_spells/sp_hailofstone.nss deleted file mode 100644 index ae95ec97..00000000 --- a/_haks/poa_exp_spells/sp_hailofstone.nss +++ /dev/null @@ -1,68 +0,0 @@ -#include "prc_inc_sp_tch" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - // Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - - // Apply area vfx. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, - EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL), lTarget); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, - EffectVisualEffect(356 /*VFX_FNF_SCREEN_SHAKE2*/), lTarget); - - float fDelay; - - // Determine damage dice. - int nCasterLvl = PRCGetCasterLevel(); - int nDice = nCasterLvl; - if (nDice > 20) nDice = 20; - int nPenetr = nCasterLvl + SPGetPenetr(); - - // Declare the spell shape, size and the location. Capture the first target object in the shape. - // Cycle through the targets within the spell shape until an invalid object is captured. - int nTargets = 0; - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, FALSE, - OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - while (GetIsObjectValid(oTarget)) - { - fDelay = PRCGetSpellEffectDelay(lTarget, oTarget); - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - // Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget); - - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr)) - { - // Make touch attack, saving result for possible critical - int nTouchAttack = PRCDoRangedTouchAttack(oTarget);; - if (nTouchAttack > 0) - { - // Roll the damage of (1d6+1) / level, doing double damage on a crit. - int nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_BLUDGEONING, - 1 == nTouchAttack ? nDice : (nDice * 2), 4); - - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - - // Apply the damage and the damage visible effect to the target. - SPApplyEffectToObject(DURATION_TYPE_INSTANT, - PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_BLUDGEONING), oTarget); - PRCBonusDamage(oTarget); -//TODO: need VFX -// SPApplyEffectToObject(DURATION_TYPE_INSTANT, -// EffectVisualEffect(VFX_IMP_FROST_S), oTarget); - } - } - } - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, FALSE, - OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_healrbm.ncs b/_haks/poa_exp_spells/sp_healrbm.ncs deleted file mode 100644 index c3fa45f0..00000000 Binary files a/_haks/poa_exp_spells/sp_healrbm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_healrbm.nss b/_haks/poa_exp_spells/sp_healrbm.nss deleted file mode 100644 index 791c95aa..00000000 --- a/_haks/poa_exp_spells/sp_healrbm.nss +++ /dev/null @@ -1,21 +0,0 @@ -///////////////////////////////////////////////////////// -// Healer's Balm -// sp_healrbm.nss -///////////////////////////////////////////////////////// -/*Healer’s Balm: This smooth, sweet-smelling balm -allows a healer to better soothe the effects of wounds, disease, -and poison. Healer’s balm provides a +1 alchemical -bonus on Heal checks made to help an affected creature. -The effects of healer’s balm last for 1 minute. -One dose of healer’s balm is enough to coat one -Medium creature. Applying healer’s balm is a standard -action that provokes attacks of opportunity. It can be -applied as part of a standard action made to administer -first aid, treat a wound, or treat poison. */ - -void main() -{ - object oPC = OBJECT_SELF; - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSkillIncrease(SKILL_HEAL, 5), oPC, TurnsToSeconds(1)); - SendMessageToPC(oPC, "You coat your hands in Healer's Balm."); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_hellfire.ncs b/_haks/poa_exp_spells/sp_hellfire.ncs deleted file mode 100644 index 41e97e66..00000000 Binary files a/_haks/poa_exp_spells/sp_hellfire.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_hellfire.nss b/_haks/poa_exp_spells/sp_hellfire.nss deleted file mode 100644 index e37ab87d..00000000 --- a/_haks/poa_exp_spells/sp_hellfire.nss +++ /dev/null @@ -1,87 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Hellfire -//:: FileName sp_hellfire.nss -//::////////////////////////////////////////////// -/**@file Hellfire -Evocation [Evil] -Level: Diabolic 4 -Components: V, S -Casting Time: 1 action -Range: Close (25 ft. + 5 ft./2 levels) -Area: 5-ft.-radius spread -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -The caster creates a small explosion of brimstone -and fire that deals 3d6 points of special diabolic -fire damage. The diabolic flames are not subject -to being reduced by protection from elements -(fire), fire shield (chill shield), or similar -magic. - -Author: Tenjac -Created: 05/03/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - - -void main() -{ - object oPC = OBJECT_SELF; - location lLoc = PRCGetSpellTargetLocation(); - effect eVis = EffectVisualEffect(806); - effect eExplode = EffectVisualEffect(VFX_FNF_HELLFIRE); - effect eDam; - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDamage; - int nMetaMagic = PRCGetMetaMagicFeat(); - float fDelay; - - //Spellhook - if(!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Apply the fireball explosion at the location captured above. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lLoc); - - //get initial oTarget - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - - //damage loop - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //Roll damage for each target - nDamage = d6(nCasterLvl/2)+3; - - //Resolve metamagic - if (nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDamage =(nCasterLvl/2)*6 +3; - } - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDamage = nDamage + nDamage / 2; - } - - //Set the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); - - // Apply effects to the currently selected target. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - //SPEvilShift(oPC); - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_heroism.ncs b/_haks/poa_exp_spells/sp_heroism.ncs deleted file mode 100644 index 7641c87b..00000000 Binary files a/_haks/poa_exp_spells/sp_heroism.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_heroism.nss b/_haks/poa_exp_spells/sp_heroism.nss deleted file mode 100644 index 99218010..00000000 --- a/_haks/poa_exp_spells/sp_heroism.nss +++ /dev/null @@ -1,78 +0,0 @@ -/* - sp_heroism - - Consolidation of Heroism, Greater Heroism - - By: Flaming_Sword - Created: Jul 1, 2006 - Modified: Jul 1, 2006 - - Fixed typo -*/ - -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nSpellID = PRCGetSpellId(); - PRCSignalSpellEvent(oTarget, FALSE); - int bGreater = (nSpellID == SPELL_GREATER_HEROISM); - if(bGreater && GetHasSpellEffect(SPELL_HEROISM, oTarget)) - { - PRCRemoveSpellEffects(SPELL_HEROISM, oCaster, oTarget); - } - else if(!bGreater && GetHasSpellEffect(SPELL_GREATER_HEROISM, oTarget)) - { - FloatingTextStringOnCreature("Target already has Greater Heroism Effect!", oCaster); - return TRUE; - } - float fDuration = PRCGetMetaMagicDuration(TenMinutesToSeconds(nCasterLevel)); - int nBonus = (bGreater) ? 4 : 2; - // Create the chain of buffs to apply, including the vfx. - effect eBuff = EffectSavingThrowIncrease(SAVING_THROW_ALL, nBonus, SAVING_THROW_TYPE_ALL); - eBuff = EffectLinkEffects (eBuff, EffectAttackIncrease(nBonus, ATTACK_BONUS_MISC)); - eBuff = EffectLinkEffects (eBuff, EffectSkillIncrease(SKILL_ALL_SKILLS, nBonus)); - if(bGreater) - eBuff = EffectLinkEffects (eBuff, EffectImmunity(IMMUNITY_TYPE_FEAR)); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBuff, oTarget, fDuration,TRUE,-1,nCasterLevel); - //improperly removing gheroism when temp hp expire; fix by unlinking temp hp from other effect ~ Lockindal - if(bGreater) - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectTemporaryHitpoints(nCasterLevel > 40 ? 40 : nCasterLevel), oTarget, fDuration,TRUE,-1,nCasterLevel); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_RESTORATION), oTarget); - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_hf_storm.ncs b/_haks/poa_exp_spells/sp_hf_storm.ncs deleted file mode 100644 index 0b2ea2de..00000000 Binary files a/_haks/poa_exp_spells/sp_hf_storm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_hf_storm.nss b/_haks/poa_exp_spells/sp_hf_storm.nss deleted file mode 100644 index 2d903a4c..00000000 --- a/_haks/poa_exp_spells/sp_hf_storm.nss +++ /dev/null @@ -1,85 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Hellfire Storm -//:: FileName sp_hf_storm.nss -//::////////////////////////////////////////////// -/**@file Hellfire Storm -Evocation [Evil] -Level: Diabolic 7 -Range: Medium (100 ft. + 10 ft./level) -Area: 20-ft.-radius spread - -As hellfire, except in area and range and that the -spell deals 5d6 points of special diabolic fire damage. - -Author: Tenjac -Created: -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - //Declare major variables - object oPC = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - float fDelay; - effect eExplode = EffectVisualEffect(807); - effect eVis = EffectVisualEffect(VFX_FNF_HELLFIRESTORM); - effect eDam; - - //spellhook - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - - //Apply the fireball explosion at the location captured above. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - //Get the distance between the explosion and the target to calculate delay - fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - if (!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl)) - { - //Roll damage for each target - nDamage = d6(nCasterLvl)+5; - - //Resolve metamagic - if (nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDamage = 6*(nCasterLvl)+5; - } - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDamage = nDamage + nDamage / 2; - } - - //Set the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); - if(nDamage > 0) - { - // Apply effects to the currently selected target. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - //SPEvilShift(oPC); - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_ice_knife.ncs b/_haks/poa_exp_spells/sp_ice_knife.ncs deleted file mode 100644 index 6133378c..00000000 Binary files a/_haks/poa_exp_spells/sp_ice_knife.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_ice_knife.nss b/_haks/poa_exp_spells/sp_ice_knife.nss deleted file mode 100644 index 48fa67b9..00000000 --- a/_haks/poa_exp_spells/sp_ice_knife.nss +++ /dev/null @@ -1,130 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Ice Knife -//:: FileName sp_ice_knife.nss -//::////////////////////////////////////////////// -/**@file Ice Knife -Conjuration (Creation) [Cold] -Level: Assassin 2, wu jen 2 (water),warmage 2 -Components: S, M -Casting Time: 1 standard action -Range: Long (400 ft. + 40 ft./level) -Effect: One icy missile -Duration: Instantaneous -Saving Throw: See text -Spell Resistance: Yes - -A magical shard of ice blasts from your -hand and speeds to its target. You must -succeed on a normal ranged attack to -hit (with a +2 bonus on the attack roll -for every two caster levels). If it hits, -an ice knife deals 2d8 points of cold -damage plus 2 points of Dexterity damage -(no Dexterity damage on a successful -Fortitude save). Creatures that have -immunity to cold damage also take no -Dexterity damage automatically. - -A knife that misses creates a shower -of ice crystals in a 10-foot-radius burst. -The icy burst deals 1d8 points of cold -damage to all creatures within the area -of the effect (Reflex half). - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_sp_tch" -#include "x0_i0_position" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - location lTarget = GetLocation(oTarget); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDC = PRCGetSaveDC(oTarget, oCaster); - int nAttackBonus = (nCasterLvl/2)*2; - int iAttackRoll = PRCDoRangedTouchAttack(oTarget, TRUE, oCaster, nAttackBonus); - int nDamageType = ChangedElementalDamage(oCaster, DAMAGE_TYPE_COLD); - int nDam; - effect eImp = EffectVisualEffect(VFX_IMP_FROST_S); - effect eVis = EffectVisualEffect(VFX_IMP_FROST_L); - effect eDam; - - nCasterLvl += SPGetPenetr(); - - if(iAttackRoll) - { - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_ICE_KNIFE)); - - if(!PRCDoResistSpell(oCaster, oTarget, nCasterLvl)) - { - nDam = d8(nCasterLvl/4)+2; - if (nMetaMagic & METAMAGIC_MAXIMIZE) - nDam = 8*(nCasterLvl/4)+2; - if (nMetaMagic & METAMAGIC_EMPOWER) - nDam += (nDam/2); - - //if failed, ability damage - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_COLD)) - { - int nDexPenalty = 2 * iAttackRoll;//double damage in case of *Critical Hit* - ApplyAbilityDamage(oTarget, ABILITY_DEXTERITY, nDexPenalty, DURATION_TYPE_TEMPORARY, TRUE, -1.0f); - } - - //Apply damage even if they are immune - can't hurt - ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDam, nDamageType); - PRCBonusDamage(oTarget); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImp, oTarget); - } - } - else - { - //missed, so do AoE - float fDistance = IntToFloat(Random(9)); //random distance for new loc - float fAngle = IntToFloat(Random(359)); //random angle from original - - //Orientation doesn't matter, so make it 0.0f - location lAoE = GenerateNewLocationFromLocation(lTarget, fDistance, fAngle, 0.0f); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lAoE); - - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0f), lAoE, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE | OBJECT_TYPE_DOOR); - - while(GetIsObjectValid(oTarget)) - { - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_ICE_KNIFE)); - - if(!PRCDoResistSpell(oCaster, oTarget, nCasterLvl)) - { - nDam = d8(nCasterLvl/4)+1; - if (nMetaMagic & METAMAGIC_MAXIMIZE) - nDam = 8*(nCasterLvl/4)+1; - if (nMetaMagic & METAMAGIC_EMPOWER) - nDam += (nDam/2); - - nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nDC, SAVING_THROW_TYPE_COLD); - - if(nDam > 0) - { - eDam = PRCEffectDamage(oTarget, nDam, nDamageType); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImp, oTarget); - PRCBonusDamage(oTarget); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0f), lAoE, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE | OBJECT_TYPE_DOOR); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_iceburst.ncs b/_haks/poa_exp_spells/sp_iceburst.ncs deleted file mode 100644 index 512aa661..00000000 Binary files a/_haks/poa_exp_spells/sp_iceburst.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_iceburst.nss b/_haks/poa_exp_spells/sp_iceburst.nss deleted file mode 100644 index cf748c75..00000000 --- a/_haks/poa_exp_spells/sp_iceburst.nss +++ /dev/null @@ -1,19 +0,0 @@ -#include "prc_inc_spells" -#include "spinc_burst" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - // Get the number of damage dice. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nDice = nCasterLvl; - if (nDice > 20) nDice = 20; - - // Ice burst is a colossal radius burst doing 1d4+10/level (cap at 10) cold damage. - DoBurst (nCasterLvl,4, 1, nDice, - VFX_FNF_ICESTORM, VFX_IMP_FROST_S, - RADIUS_SIZE_GARGANTUAN, DAMAGE_TYPE_COLD, DAMAGE_TYPE_BLUDGEONING, SAVING_THROW_TYPE_COLD); -} diff --git a/_haks/poa_exp_spells/sp_impmagearm.ncs b/_haks/poa_exp_spells/sp_impmagearm.ncs deleted file mode 100644 index ab8aa026..00000000 Binary files a/_haks/poa_exp_spells/sp_impmagearm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_impmagearm.nss b/_haks/poa_exp_spells/sp_impmagearm.nss deleted file mode 100644 index 50c0112c..00000000 --- a/_haks/poa_exp_spells/sp_impmagearm.nss +++ /dev/null @@ -1,38 +0,0 @@ -#include "prc_inc_spells" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - // Declare major variables - object oTarget = PRCGetSpellTargetObject(); - - // Signal the spell cast at event - PRCSignalSpellEvent(oTarget, FALSE); - - int nCasterLevel = PRCGetCasterLevel(); - - // Boost AC. - int nIncrease = 3 + nCasterLevel / 2; - if (nIncrease > 13) nIncrease = 13; - effect eAC = EffectACIncrease(nIncrease, AC_ARMOUR_ENCHANTMENT_BONUS); - eAC = EffectLinkEffects(eAC, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - - // Get duration, 1 hour / level unless extended. - float fDuration = PRCGetMetaMagicDuration(MinutesToSeconds(nCasterLevel)); - - // Build the list of fancy visual effects to apply when the spell goes off. - effect eVFX = EffectVisualEffect(VFX_IMP_AC_BONUS); - - // Remove existing effect, if any. - PRCRemoveEffectsFromSpell(oTarget, GetSpellId()); - - // Apply effects and VFX to target - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAC, oTarget, fDuration,TRUE,-1,nCasterLevel); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oTarget); - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_kelgore_fb.ncs b/_haks/poa_exp_spells/sp_kelgore_fb.ncs deleted file mode 100644 index e6078d65..00000000 Binary files a/_haks/poa_exp_spells/sp_kelgore_fb.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_kelgore_fb.nss b/_haks/poa_exp_spells/sp_kelgore_fb.nss deleted file mode 100644 index 9a6a2e05..00000000 --- a/_haks/poa_exp_spells/sp_kelgore_fb.nss +++ /dev/null @@ -1,73 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Kelgore's Fire Bolt -//:: FileName sp_kelgore_fb.nss -//::////////////////////////////////////////////// -/**@file Kelgore's Fire Bolt -Conjuration/Evocation [Fire] -Level: Duskblade 1, sorcerer/wizard 1 -Components: V,S,M -Casting Time: 1 standard action -Range: Medium -Target: One creature -Duration: Instantaneous -Saving Thorw: Reflex half -Spell Resistance: See text - -This spell conjures a small orb of rock and sheathes -it in arcane energy. This spell deals 1d6 point of -fire damage per caster level (maximum 5d6). If you -fail to overcome the target's spell resistance, the -spell still deals 1d6 points of fire damage from the -heat and force of the conjured orb's impact. - -Material component: A handful of ashes -**/ - -//////////////////////////////////////////////////// -// Author: Tenjac -// Date: 21.9.06 -//////////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - int nMax = nCasterLvl; - if (nMax > 20) nMax = 20; - int nDam = d6(nMax); - - PRCSignalSpellEvent(oTarget,TRUE, SPELL_KELGORES_FIRE_ORB, oPC); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * nMax; - } - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - if(PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - nDam = d6(1); - eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - } - - nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nDC, SAVING_THROW_TYPE_FIRE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE), oTarget); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_lahms_fd.ncs b/_haks/poa_exp_spells/sp_lahms_fd.ncs deleted file mode 100644 index ee888799..00000000 Binary files a/_haks/poa_exp_spells/sp_lahms_fd.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_lahms_fd.nss b/_haks/poa_exp_spells/sp_lahms_fd.nss deleted file mode 100644 index 9be4fbbc..00000000 --- a/_haks/poa_exp_spells/sp_lahms_fd.nss +++ /dev/null @@ -1,154 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name: Lahm's Finger Darts -//:: Filename: sp_lahms_fd.nss -//:://///////////////////////////////////////////// -/**@file Lahm's Finger Darts -Transmutation [Evil] -Level: Corrupt 2 -Components: V S, Corrupt -Casting Time: 1 action -Range: Medium (100 ft. + 10 ft./level) -Targets: Up to five creatures, no two of which can -be more than 15 ft. apart -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -The caster's finger becomes a dangerous projectile -that flies from her hand and unerringly strikes its -target. The dart deals 1d4 points of Dexterity -damage. Creatures without fingers cannot cast this -spell. - -The dart strikes unerringly, even if the target is -in melee or has partial cover or concealment. -Inanimate objects (locks, doors, and so forth) -cannot be damaged by the spell. - -For every three caster levels beyond 1st, the caster -gains an additional dart by losing an additional -finger: two at 4th level, three at 7th level, four -at 10th level, and the maximum of five darts at 13th -level or higher. If the caster shoots multiple darts, -she can have them strike a single creature or several -creatures. A single dart can strike only one creature. -The caster must designate targets before checking for -spell resistance or damage. - -Fingers lost to this spell grow back when the -corruption cost is healed, at the rate of one finger -per point of Strength damage healed. - -Corruption Cost: 1 point of Strength damage per dart, -plus the loss of one finger per dart. A hand with one -or no fingers is useless. - -@author Written By: Tenjac -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - //Spellhook - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nLFingers = (GetPersistantLocalInt(oPC, "FINGERS_LEFT_HAND") - 1); - int nRFingers = (GetPersistantLocalInt(oPC, "FINGERS_RIGHT_HAND")- 1); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nFingers = 1; - int nDam; - effect eVis = EffectVisualEffect(VFX_IMP_MAGBLUE); - effect eMissile = EffectVisualEffect(VFX_IMP_MIRV); - effect eDam = EffectAbilityDecrease(ABILITY_DEXTERITY, nDam); - float fDist = GetDistanceBetween(OBJECT_SELF, oTarget); - float fDelay = fDist/(3.0 * log(fDist) + 2.0); - float fDelay2, fTime; - location lTarget = PRCGetSpellTargetLocation(); - - PRCSignalSpellEvent(oTarget,TRUE, SPELL_LAHMS_FINGER_DARTS, oPC); - - //Set up fingers if it hasn't been done before - if (GetPersistantLocalInt(oPC, "FINGERS_LEFT_HAND") < 1) - { - SetPersistantLocalInt(oPC, "FINGERS_LEFT_HAND", 6); - SetPersistantLocalInt(oPC, "FINGERS_RIGHT_HAND", 6); - nLFingers = 5; - nRFingers = 5; - } - - //Spell Resistance, no save - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //Calculate fingers used - if(nCasterLvl > 3) nFingers++; - if(nCasterLvl > 6) nFingers++; - if(nCasterLvl > 9) nFingers++; - if(nCasterLvl > 12) nFingers++; - - //gotta set up a new counter because nFingers is used later - int nCounter = nFingers; - - //Determine which hand to screw up - if(nLFingers >= nFingers) - { - nLFingers -= nFingers; - SetPersistantLocalInt(oPC, "FINGERS_LEFT_HAND", nLFingers); - } - - else if(nRFingers >= nFingers) - { - nRFingers -= nFingers; - SetPersistantLocalInt(oPC, "FINGERS_RIGHT_HAND", nRFingers); - } - - else - { - SendMessageToPC(oPC, "You do not have enough fingers left to cast this spell"); - nCounter = 0; - } - - //Damage loop - while(nCounter > 0) - { - nDam = d4(1)+ (nCasterLvl/4); - - //Apply the MIRV and damage effect - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget)); - DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget)); - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - - // Play the sound of a dart hitting - DelayCommand(fTime, PlaySound("cb_ht_dart1")); - - //decrement nCounter to handle loop termination - nCounter--; - } - - //Determine usefullness of remaining stumps - if(nLFingers < 2) - { - //mark left hand useless - SetPersistantLocalInt(oPC, "LEFT_HAND_USELESS", 1); - } - - if(nRFingers < 2) - { - //mark right hand useless - SetPersistantLocalInt(oPC, "RIGHT_HAND_USELESS", 1); - } - } - - //Corrupt spells get mandatory 10 pt evil adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_EVIL, 10, FALSE); - - //SPEvilShift(oPC); - DoCorruptionCost(oPC, ABILITY_STRENGTH, nFingers, 0); - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_lconvict.ncs b/_haks/poa_exp_spells/sp_lconvict.ncs deleted file mode 100644 index b0d045ad..00000000 Binary files a/_haks/poa_exp_spells/sp_lconvict.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_lconvict.nss b/_haks/poa_exp_spells/sp_lconvict.nss deleted file mode 100644 index 16e983d9..00000000 --- a/_haks/poa_exp_spells/sp_lconvict.nss +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Legion's Conviction - Give all allies in a huge burst a +2 to -// +5 bonus to saves. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - - // Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - - // Get the effective caster level. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - // Determine the save bonus. - int nBonus = 2 + (PRCGetCasterLevel() / 6); - if (nBonus > 15) nBonus = 15; - - // Determine the spell's duration, taking metamagic feats into account. - float fDuration = PRCGetMetaMagicDuration(TurnsToSeconds(PRCGetCasterLevel())); - - // Declare the spell shape, size and the location. Capture the first target object in the shape. - // Cycle through the targets within the spell shape until an invalid object is captured. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - while (GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget, FALSE); - - float fDelay = PRCGetSpellEffectDelay(lTarget, oTarget); - - // Apply the buff and vfx. - effect eBuff = EffectSavingThrowIncrease(SAVING_THROW_ALL, nBonus, SAVING_THROW_TYPE_ALL); - eBuff = EffectLinkEffects(eBuff, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - eBuff = EffectLinkEffects(eBuff, EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBuff, oTarget, fDuration,TRUE,-1,nCasterLvl -)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_RESTORATION_LESSER), oTarget)); - } - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_lcurimpbl.ncs b/_haks/poa_exp_spells/sp_lcurimpbl.ncs deleted file mode 100644 index bfc30d9d..00000000 Binary files a/_haks/poa_exp_spells/sp_lcurimpbl.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_lcurimpbl.nss b/_haks/poa_exp_spells/sp_lcurimpbl.nss deleted file mode 100644 index 80fdc16b..00000000 --- a/_haks/poa_exp_spells/sp_lcurimpbl.nss +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Legion's Curse of Impending Blades - All targets receives a -// -2 to AC penalty. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - // Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - - // Get the effective caster level. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - // Determine the save bonus. - int nBonus = 2 + (PRCGetCasterLevel() / 6); - if (nBonus > 15) nBonus = 15; - - // Determine the spell's duration, taking metamagic feats into account. - float fDuration = PRCGetMetaMagicDuration(MinutesToSeconds(PRCGetCasterLevel())); - - // Declare the spell shape, size and the location. Capture the first target object in the shape. - // Cycle through the targets within the spell shape until an invalid object is captured. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - while (GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget); - - float fDelay = PRCGetSpellEffectDelay(lTarget, oTarget); - - // Apply the curse and vfx. - effect eCurse = EffectACDecrease(2); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE)); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCurse, oTarget, fDuration,TRUE,-1,nCasterLvl -)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE), oTarget)); - } - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_lcurpfail.ncs b/_haks/poa_exp_spells/sp_lcurpfail.ncs deleted file mode 100644 index cbee1f0e..00000000 Binary files a/_haks/poa_exp_spells/sp_lcurpfail.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_lcurpfail.nss b/_haks/poa_exp_spells/sp_lcurpfail.nss deleted file mode 100644 index 5fb74ad8..00000000 --- a/_haks/poa_exp_spells/sp_lcurpfail.nss +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Legion's Curse of Petty Failing - Target takes a -2 penalty to -// attacks and saves. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - // Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - - // Get the effective caster level. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - // Determine the save bonus. - int nBonus = 2 + (PRCGetCasterLevel() / 6); - if (nBonus > 15) nBonus = 15; - - // Determine the spell's duration, taking metamagic feats into account. - float fDuration = PRCGetMetaMagicDuration(MinutesToSeconds(PRCGetCasterLevel())); - - // Declare the spell shape, size and the location. Capture the first target object in the shape. - // Cycle through the targets within the spell shape until an invalid object is captured. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - while (GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget); - - float fDelay = PRCGetSpellEffectDelay(lTarget, oTarget); - - // Apply the curse and vfx. - effect eCurse = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2); - eCurse = EffectLinkEffects(eCurse, EffectAttackDecrease(2)); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE)); - eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCurse, oTarget, fDuration,TRUE,-1,nCasterLvl -)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE), oTarget)); - } - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_leonl_roar.ncs b/_haks/poa_exp_spells/sp_leonl_roar.ncs deleted file mode 100644 index 173f0743..00000000 Binary files a/_haks/poa_exp_spells/sp_leonl_roar.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_leonl_roar.nss b/_haks/poa_exp_spells/sp_leonl_roar.nss deleted file mode 100644 index 0728d1e9..00000000 --- a/_haks/poa_exp_spells/sp_leonl_roar.nss +++ /dev/null @@ -1,74 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Leonal's Roar -//:: FileName sp_leonl_roar.nss -//::////////////////////////////////////////////// -/**@file Leonal's Roar -Evocation [Good, Sonic] -Level: Drd 8 -Components: V -Casting Time: 1 standard action -Range: 40 ft. -Targets: Non good creatures in a 40-ft.radius spread -centered on you -Duration: Instantaneous -Saving Throw: Fortitude partial -Spell Resistance: Yes - -This spell has the effect of a holy word, and it -additionally deals 2d6 points of sonic damage to -non-good creatures in the area. A successful -Fortitude saving throw negates the sonic damage, -but not the other effects of the spell. - -Author: Tenjac -Created: 7/7/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - location lLoc = PRCGetSpellTargetLocation(); - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 12.192, lLoc, TRUE, OBJECT_TYPE_CREATURE); - int nDC; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDam; - int nCasterLvl = PRCGetCasterLevel(oPC); - - while(GetIsObjectValid(oTarget)) - { - nDC = PRCGetSaveDC(oTarget, oPC); - - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SONIC)) - { - nDam = d6(nCasterLvl)+2; - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6*(nCasterLvl)+2; - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_SONIC), oTarget); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 12.192, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - //Holy Word - ActionCastSpellAtLocation(SPELL_HOLY_WORD, lLoc, nMetaMagic, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE); - //SPGoodShift(oPC); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_lowersr.ncs b/_haks/poa_exp_spells/sp_lowersr.ncs deleted file mode 100644 index 50367007..00000000 Binary files a/_haks/poa_exp_spells/sp_lowersr.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_lowersr.nss b/_haks/poa_exp_spells/sp_lowersr.nss deleted file mode 100644 index 6350565b..00000000 --- a/_haks/poa_exp_spells/sp_lowersr.nss +++ /dev/null @@ -1,41 +0,0 @@ -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - // Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget); - - if(PRCGetIsAliveCreature(oTarget)) - { - // Let the target attempte to make a fort save. (good luck since there is a penalty equal to the - // caster's level on the save). - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget,OBJECT_SELF) + nCasterLvl, SAVING_THROW_TYPE_SPELL)) - { - // Calculate the duration of the spell. - float fDuration = PRCGetMetaMagicDuration(MinutesToSeconds(nCasterLvl)); - - // Generate a SR decrease for the caster level, up to a max of 15. - int nSRReduction = nCasterLvl; - if (nSRReduction > 40) nSRReduction = 40; - effect eSR = EffectLinkEffects(EffectSpellResistanceDecrease(nSRReduction), EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE)); - - //Apply the VFX impact and effects - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSR, oTarget, fDuration,TRUE,-1,nCasterLvl); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE), oTarget); - } - } - } - - PRCSetSchool(); -} - diff --git a/_haks/poa_exp_spells/sp_lshlfat.ncs b/_haks/poa_exp_spells/sp_lshlfat.ncs deleted file mode 100644 index e862254a..00000000 Binary files a/_haks/poa_exp_spells/sp_lshlfat.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_lshlfat.nss b/_haks/poa_exp_spells/sp_lshlfat.nss deleted file mode 100644 index 041be810..00000000 --- a/_haks/poa_exp_spells/sp_lshlfat.nss +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Legion's Curse of Petty Failing - Target takes a -2 penalty to -// attacks and saves. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - - // Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - - // Determine the save bonus. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nBonus = 2 + (nCasterLvl / 6); - if (nBonus > 15) nBonus = 15; - - // Determine the spell's duration, taking metamagic feats into account. - float fDuration = PRCGetMetaMagicDuration(MinutesToSeconds(nCasterLvl)); - - // Declare the spell shape, size and the location. Capture the first target object in the shape. - // Cycle through the targets within the spell shape until an invalid object is captured. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - while (GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget, FALSE); - - float fDelay = PRCGetSpellEffectDelay(lTarget, oTarget); - - // Apply the curse and vfx. - effect eBuff = EffectACIncrease(nBonus, AC_DEFLECTION_BONUS); - eBuff = EffectLinkEffects(eBuff, EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBuff, oTarget, fDuration,TRUE,-1,nCasterLvl -)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_AC_BONUS), oTarget)); - } - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_mass_frshld.ncs b/_haks/poa_exp_spells/sp_mass_frshld.ncs deleted file mode 100644 index 331a3e11..00000000 Binary files a/_haks/poa_exp_spells/sp_mass_frshld.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_mass_frshld.nss b/_haks/poa_exp_spells/sp_mass_frshld.nss deleted file mode 100644 index 9419b234..00000000 --- a/_haks/poa_exp_spells/sp_mass_frshld.nss +++ /dev/null @@ -1,74 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Mass Fire Shield -//:: FileName sp_mass_frshld.nss -//::////////////////////////////////////////////// -/**@file Mass Fire Shield -Evocation [Fire or Cold] -Level: Sorcerer/wizard 5, warmage 5 -Components: V, S, M -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Targets: One or more allied creatures, no two of which -can be more than 30 ft. apart -Duration: 1 round/level (D) -Save: Will negates (harmless) -Spell Resistance: Yes (harmless) - -This spell functions like fire shield (see -page 230 of the Player’s Handbook), -except as noted above. - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - if(!X2PreSpellCastCode()) return; - - object oPC = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oPC); - location lLoc = PRCGetSpellTargetLocation(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDam = PRCMin(40,nCasterLvl); - float fDur = RoundsToSeconds(nCasterLvl); - effect eVis, eShield, eReduce; - int nSpell = GetSpellId(); - float fRadius = FeetToMeters(15.0); - - //Extend - if(nMetaMagic & METAMAGIC_EXTEND) fDur += fDur; - - if(nSpell == SPELL_MASS_FIRE_SHIELD_RED) - { - eVis = EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD); - eShield = EffectDamageShield(nDam, DAMAGE_BONUS_1d6, ChangedElementalDamage(oPC, DAMAGE_TYPE_FIRE)); - eReduce = EffectDamageImmunityIncrease(DAMAGE_TYPE_COLD, 50); - } - else if (nSpell == SPELL_MASS_FIRE_SHIELD_BLUE) - { - eVis = EffectVisualEffect(VFX_DUR_CHILL_SHIELD); - eShield = EffectDamageShield(nDam, DAMAGE_BONUS_1d6, ChangedElementalDamage(oPC, DAMAGE_TYPE_COLD)); - eReduce = EffectDamageImmunityIncrease(DAMAGE_TYPE_FIRE, 50); - } - effect eLink = EffectLinkEffects(eShield, eVis); - eLink = EffectLinkEffects(eLink, eReduce); - - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRadius, lLoc, FALSE, OBJECT_TYPE_CREATURE); - while(GetIsObjectValid(oTarget)) - { - if(GetIsFriend(oTarget, oPC)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDur, TRUE, nSpell, nCasterLvl); - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRadius, lLoc, FALSE, OBJECT_TYPE_CREATURE); - } - PRCSetSchool(); -} - diff --git a/_haks/poa_exp_spells/sp_nec_bloat.ncs b/_haks/poa_exp_spells/sp_nec_bloat.ncs deleted file mode 100644 index 0c765518..00000000 Binary files a/_haks/poa_exp_spells/sp_nec_bloat.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_nec_bloat.nss b/_haks/poa_exp_spells/sp_nec_bloat.nss deleted file mode 100644 index f982c574..00000000 --- a/_haks/poa_exp_spells/sp_nec_bloat.nss +++ /dev/null @@ -1,98 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Necrotic Bloat -//:: FileName sp_nec_bloat.nss -//::////////////////////////////////////////////// -/** @file -Necrotic Bloat -Necromancy [Evil] -Level: Clr 3, sor/wiz 3 -Components: V, S, F -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Target: Living creature with necrotic cyst -Duration: Instantaneous -Saving Throw: None -Spell Resistance: No - -You cause the cyst of a subject already harboring -a necrotic cyst (see spell of the same name) to -pulse and swell. This agitation of the necrotic -cyst tears living tissue and expands the size of -the cyst, dealing massive internal damage to the -subject. The subject takes 1d6 points of damage -per level (maximum 10d6), and half the damage is -considered vile damage because the cyst expands -to envelop the newly necrotized tissue. The cyst -is reduced to its original size when the vile -damage is healed. - -Vile damage can only be healed -by magic cast within the area of a consecrate or -hallow spell (or an area naturally consecrated or -hallowed). Points of vile damage represent such -an evil violation to a character's body or soul -that only in a holy place, with holy magic, can -the damage be repaired. -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "spinc_necro_cyst" -#include "inc_utility" - -void main() -{ - // Set the spellschool - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - // Run the spellhook. - if (!X2PreSpellCastCode()) return; - - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nLevel = PRCMin(PRCGetCasterLevel(oPC), 20); - int nMetaMagic = PRCGetMetaMagicFeat(); - - PRCSignalSpellEvent(oTarget, TRUE, SPELL_NECROTIC_BLOAT, oPC); - - if(!GetCanCastNecroticSpells(oPC)) - return; - - if(!GetHasNecroticCyst(oTarget)) - { - // "Your target does not have a Necrotic Cyst." - SendMessageToPCByStrRef(oPC, nNoNecCyst); - return; - } - - //Resolve spell - int nDam = d6(nLevel); - - //Metmagic: Maximize - if (nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (nLevel); - } - - //Metmagic: Empower - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - int nVile = nDam/2; - int nNorm = (nDam - nVile); - - //Vile damage is currently being applied as Positive damage - effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_POSITIVE); - effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget); - - - PRCSetSchool(); - - //SPEvilShift(oPC); -} diff --git a/_haks/poa_exp_spells/sp_nec_burst.ncs b/_haks/poa_exp_spells/sp_nec_burst.ncs deleted file mode 100644 index 6267c89b..00000000 Binary files a/_haks/poa_exp_spells/sp_nec_burst.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_nec_burst.nss b/_haks/poa_exp_spells/sp_nec_burst.nss deleted file mode 100644 index 3e6c1d22..00000000 --- a/_haks/poa_exp_spells/sp_nec_burst.nss +++ /dev/null @@ -1,118 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Necrotic Burst -//:: FileName sp_nec_burst.nss -//::////////////////////////////////////////////// -/** @file -Necrotic Burst -Necromancy [Evil] -Level: Clr 5, sor/wiz 5 -Components: V, S, F -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Target: Living creature with necrotic cyst -Duration: Instantaneous -Saving Throw: Fortitude partial -Spell Resistance: No - -You cause the cyst of a subject already harboring a necrotic cyst -(see spell of the same name) to explosively enlarge itself at the -expense of the subject's body tissue. if the subject succeeds on -her saving throw, she takes 1d6 points of damage per level -(maximum 15d6), and half the damage is considered vile damage -(see necrotic bloat). The subject's cyst-derived saving throw -penalty against effects from the school of necromancy applies. - -If the subject fails her saving throw, the cyst expands beyond -control, killing the subject. On the round following the subject's -death, the cyst exits the flesh of the slain subject as a free-willed -undead called a skulking cyst. The skulking cyst is formed from the -naked organs of the subject (usually the intestines, but also -including a mass of blood vessels, the odd bone or two, and -sometimes even half the lolling head). - - Author: Tenjac - Created: 9/22/05 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "spinc_necro_cyst" -#include "inc_utility" -#include "prc_add_spell_dc" - -void main() -{ - // Set the spellschool - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - // Run the spellhook. - if (!X2PreSpellCastCode()) return; - - - object oPC = OBJECT_SELF; - int nLevel = PRCMin(PRCGetCasterLevel(oPC), 40); - int nMetaMagic = PRCGetMetaMagicFeat(); - object oTarget = PRCGetSpellTargetObject(); - - PRCSignalSpellEvent(oTarget, TRUE, SPELL_NECROTIC_BURST, oPC); - - if(!GetCanCastNecroticSpells(oPC)) - return; - - if(!GetHasNecroticCyst(oTarget)) - { - // "Your target does not have a Necrotic Cyst." - SendMessageToPCByStrRef(oPC, nNoNecCyst); - return; - } - - //Define nDC - - int nDC = PRCGetSaveDC(oTarget, oPC); - - //Resolve spell - if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) - { - if(!GetHasMettle(oTarget, SAVING_THROW_FORT)) - { - - int nDam = d6(nLevel); - - //Metmagic: Maximize - if (nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (nLevel); - } - - //Metmagic: Empower - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - int nVile = nDam/2; - int nNorm = (nDam - nVile); - //Vile damage is currently being applied as Positive damage - effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_POSITIVE); - effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget); - } - } - - else - { - DeathlessFrenzyCheck(oTarget); - effect eDeath = EffectDeath(); - - eDeath = SupernaturalEffect(eDeath); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - RemoveCyst(oTarget); - PRCSetSchool(); - } - //SPEvilShift(oPC); -} - diff --git a/_haks/poa_exp_spells/sp_nec_erupt.ncs b/_haks/poa_exp_spells/sp_nec_erupt.ncs deleted file mode 100644 index 763f810a..00000000 Binary files a/_haks/poa_exp_spells/sp_nec_erupt.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_nec_erupt.nss b/_haks/poa_exp_spells/sp_nec_erupt.nss deleted file mode 100644 index d18df174..00000000 --- a/_haks/poa_exp_spells/sp_nec_erupt.nss +++ /dev/null @@ -1,144 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Necrotic Eruption -//:: FileName sp_nec_erupt.nss -//::////////////////////////////////////////////// -/** @file -Necrotic Eruption -Necromancy [Evil] -Level: Clr 6, sor/wiz 6 -Components: V, S, F -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Target: Living creature with necrotic cyst and all creatures in 20 ft. Radius spread -Duration: Instantaneous -Saving Throw: Fortitude partial -Spell Resistance: No - -You cause the cyst of a subject already harboring a necrotic cyst -(see spell of the same name) to explosively enlarge itself at the -expense of the subject's body tissue, harming both the subject -(and nearby creatures if the subject fails his save). if the -subject succeeds on his saving throw, he takes 1d6 points of damage - per level (maximum 15d6), and half the damage is considered vile -damage (see necrotic bloat). The subject's cyst-derived saving throw - penalty against effects from the school of necromancy applies. - -If the subject fails his saving throw, the cyst expands beyond control, - killing the subject. All creatures within 20 feet of the subject take -1d6 points of damage per level (maximum 15d6; Reflex half), and half the - damage taken is considered vile damage. All creatures in range that take -this secondary damage are also exposed to the effect of the base necrotic -cyst spell. On the round following the subject's death, the cyst exits the - flesh of the slain subject as a free-willed undead called a skulking cyst. - - Author: Tenjac - Created: 9/22/05 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "spinc_necro_cyst" -#include "inc_utility" -#include "prc_add_spell_dc" - -void main() -{ - // Set the spellschool - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - // Run the spellhook. - if (!X2PreSpellCastCode()) return; - - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nLevel = PRCMin(PRCGetCasterLevel(oPC), 60); - int nMetaMagic = PRCGetMetaMagicFeat(); - - PRCSignalSpellEvent(oTarget, TRUE, SPELL_NECROTIC_ERUPTION, oPC); - - if(!GetCanCastNecroticSpells(oPC)) - return; - - if(!GetHasNecroticCyst(oTarget)) - { - // "Your target does not have a Necrotic Cyst." - SendMessageToPCByStrRef(oPC, nNoNecCyst); - return; - } - - //Define nDC - - int nDC = PRCGetSaveDC(oTarget, oPC); - - //Resolve spell - - - if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) - { - if(!GetHasMettle(oTarget, SAVING_THROW_FORT)) - { - - int nDam = d6(nLevel); - - //Metmagic: Maximize - if (nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (nLevel); - } - - //Metmagic: Empower - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - int nVile = nDam/2; - int nNorm = (nDam - nVile); - //Vile damage is currently being applied as Positive damage - effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_POSITIVE); - effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget); - } - } - - else - { - //Kill target - DeathlessFrenzyCheck(oTarget); - effect eDeath = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - RemoveCyst(oTarget); - - //Apply same damage above in ALL creatures in 20 foot radius of target - location lTarget = PRCGetSpellTargetLocation(); - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget)) - { - int nDam = d6(nLevel); - int nVile = nDam/2; - int nNorm = (nDam - nVile); - //Vile damage is currently being applied as Positive damage - effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_POSITIVE); - effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget); - //Apply Necrotic Cyst to target - AssignCommand(oPC, ActionCastSpellAtObject(SPELL_NECROTIC_CYST, oTarget, METAMAGIC_NONE, TRUE, 6, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); - - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - } - - //SPEvilShift(oPC); - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_nec_term.ncs b/_haks/poa_exp_spells/sp_nec_term.ncs deleted file mode 100644 index dc8831b5..00000000 Binary files a/_haks/poa_exp_spells/sp_nec_term.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_nec_term.nss b/_haks/poa_exp_spells/sp_nec_term.nss deleted file mode 100644 index f0a0be6d..00000000 --- a/_haks/poa_exp_spells/sp_nec_term.nss +++ /dev/null @@ -1,141 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Necrotic Termination -//:: FileName sp_nec_term.nss -//::////////////////////////////////////////////// -/** @file - Necrotic Termination - Necromancy [Evil] - Level: Clr 9, sor/wiz 9 - Components: V, S, F, XP - Casting Time: 1 standard action - Range: Medium (100 ft. + 10 ft./level) - Target: Living creature with necrotic cyst - Duration: Instantaneous - Saving Throw: Fortitude partial - Spell Resistance: No - - You cause the cyst of a subject already harboring a necrotic cyst - (see spell of the same name) to physically and spiritually enlarge - itself at the expense of the subject's body and soul. If the subject - succeeds on her saving throw, she takes 1d6 points of damage per level - (maximum 25d6), and half the damage is considered vile damage - (see necrotic bloat). The subject's cyst-derived saving throw penalty - against effects from the school of necromancy applies. - - If the subject fails her saving throw, the cyst expands beyond control, - killing the subject and digesting her soul. Raise dead, resurrection, - true resurrection, wish, and miracle cannot return life to the subject - once her soul is digested-she is gone forever. On the round following - the subject's death, the cyst exits the flesh of the slain subject as - a free-willed undead called a skulking cyst. - - XP Cost: 1,000 XP. - - Author: Tenjac - Created: 10/28/05 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "spinc_necro_cyst" -#include "prc_inc_switch" -#include "inc_utility" -#include "prc_add_spell_dc" - - -void main() -{ - // Set the spellschool - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - // Run the spellhook. - if (!X2PreSpellCastCode()) return; - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nLevel = PRCMin(PRCGetCasterLevel(oPC), 80); - int nMetaMagic = PRCGetMetaMagicFeat(); - - PRCSignalSpellEvent(oTarget, TRUE, SPELL_NECROTIC_TERMINATION, oPC); - - - if(!GetCanCastNecroticSpells(oPC)) - return; - - if(!GetHasNecroticCyst(oTarget)) - { - // "Your target does not have a Necrotic Cyst." - SendMessageToPCByStrRef(oPC, nNoNecCyst); - return; - } - //Check for perma-death - if(GetPRCSwitch(PRC_NEC_TERM_PERMADEATH)) - { - int nCost = 1000; - //Check XP if perma-death enabled - if(GetHasXPToSpend(oPC, nCost)) - SpendXP(oPC, nCost); - else - { - SendMessageToPC(oPC, "You don't have enough experience to cast this spell"); - return; - } - } - //SPEvilShift(oPC); - - - //Define nDC - int nDC = PRCGetSaveDC(oTarget, oPC); - - //Resolve spell - - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) - { - if(!GetHasMettle(oTarget, SAVING_THROW_FORT)) - { - int nDam = d6(nLevel); - - //Metmagic: Maximize - if (nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (nLevel); - } - - //Metmagic: Empower - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - int nVile = nDam/2; - int nNorm = (nDam - nVile); - //Vile damage is currently being applied as Positive damage - effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_POSITIVE); - effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget); - } - } - - - else - { - //Target SOL. Kill it. - DeathlessFrenzyCheck(oTarget); - effect eDeath = EffectDeath(); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); - - //Check for module perma-death - if(GetPRCSwitch(PRC_NEC_TERM_PERMADEATH)) - { - //Prevent revive - SetLocalInt(oPC, "PERMA_DEAD", 1); - } - - RemoveCyst(oTarget); - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_nght_caress.ncs b/_haks/poa_exp_spells/sp_nght_caress.ncs deleted file mode 100644 index db687be0..00000000 Binary files a/_haks/poa_exp_spells/sp_nght_caress.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_nght_caress.nss b/_haks/poa_exp_spells/sp_nght_caress.nss deleted file mode 100644 index 23b4dc2c..00000000 --- a/_haks/poa_exp_spells/sp_nght_caress.nss +++ /dev/null @@ -1,122 +0,0 @@ -/* - sp_nght_caress - - School: Necromancy [Evil] - Level: Sorc/Wiz 5 - Compnents: V,S - Range: Touch - Duration: Instantaneous - Save: Fortitude partial - Spell Resistance: Yes - - A touch from your hand, which sheds darkness like - the blackest of night, disrupts the life force of - a living creature. Your touch deals 1d6 points of - damage per caster level (max 15d6), and 1d6+2 - points of Constituion damage (a sucessful Fortitude - saving throw negates the Constitution damage.) - - The spell has a special effect on an undead creature. - An undead touched by you takes no damage, but it - must make a successful Will saving throw or flee - as if panicked for 1d4 rounds + 1 round per caster - level. - - By: Tenjac - Created: Dec 13, 2005 - Modified: Jul 2, 2006 - - added spell betrayal/spellstrike damage, touch attack damage - set vfx to DURATION_TYPE_INSTANT -*/ - -#include "prc_sp_func" -#include "prc_inc_sp_tch" -#include "prc_add_spell_dc" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - int nDC = PRCGetSaveDC(oTarget, oCaster); - int nMetaMagic = PRCGetMetaMagicFeat(); - PRCSignalSpellEvent(oTarget, TRUE, SPELL_NIGHTS_CARESS, oCaster); - - //Make touch attack - int nTouch = PRCDoMeleeTouchAttack(oTarget); - if(nTouch) - { - if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - //Will saving throw - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) - { - float fRounds = RoundsToSeconds(d4(1) + nCasterLevel); - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) fRounds *= 2; - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectLinkEffects(EffectFrightened(), EffectVisualEffect(VFX_IMP_HEAD_EVIL)), oTarget, fRounds); - } - } - //Spell Resistance - else if (!PRCDoResistSpell(oCaster, oTarget, nCasterLevel + SPGetPenetr()) && PRCGetIsAliveCreature(oTarget)) - { - //Max of 15 caster levels - if (nCasterLevel > 40) nCasterLevel = 40; - int nDam = d6(nCasterLevel); - //Metmagic: Maximize - if (nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 6 * nCasterLevel; - //Metmagic: Empower - if (nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - nDam += ApplySpellBetrayalStrikeDamage(oTarget, oCaster); - //Apply damage as magical - ApplyTouchAttackDamage(oCaster, oTarget, nTouch, nDam, DAMAGE_TYPE_MAGICAL); - - // Fort saving throw - if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) - { - int nConDam = (d6(1) + 2); - if (nMetaMagic & METAMAGIC_MAXIMIZE) nConDam = 8; - if (nMetaMagic & METAMAGIC_EMPOWER) nConDam += (nConDam/2); - //Ability damage healing 1 point per hour - ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nConDam, DURATION_TYPE_TEMPORARY, TRUE, -1.0, FALSE, oCaster); - //Drain VFX - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE), oTarget); - } - } - } - - return nTouch; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - //SPEvilShift(oCaster); - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_ot_frz_sphere.ncs b/_haks/poa_exp_spells/sp_ot_frz_sphere.ncs deleted file mode 100644 index 26034761..00000000 Binary files a/_haks/poa_exp_spells/sp_ot_frz_sphere.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_ot_frz_sphere.nss b/_haks/poa_exp_spells/sp_ot_frz_sphere.nss deleted file mode 100644 index 1072eab1..00000000 --- a/_haks/poa_exp_spells/sp_ot_frz_sphere.nss +++ /dev/null @@ -1,125 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Otiluke's Freezing Sphere -//:: FileName sp_ot_frz_sphere.nss -//::////////////////////////////////////////////// -/**@file Otiluke's Freezing Sphere -Evocation [Cold] -Level: Sor/Wiz 6 -Components: V, S, F -Casting Time: 1 standard action -Range: Long (400 ft. + 40 ft./level) -Target, Effect, or Area: See text -Duration: Instantaneous or 1 round/level; see text -Saving Throw: Reflex half; see text -Spell Resistance: Yes - -Freezing sphere creates a frigid globe of cold energy -that streaks from your fingertips to the location you -select, where it explodes in a 10-foot-radius burst, -dealing 1d6 points of cold damage per caster level -(maximum 15d6) to each creature in the area. An -elemental (water) creature instead takes 1d8 points -of cold damage per caster level (maximum 15d8). - -You can refrain from firing the globe after -completing the spell, if you wish. Treat this as a -touch spell for which you are holding the charge. -You can hold the charge for as long as 1 round per -level, at the end of which time the freezing sphere -bursts centered on you (and you receive no saving -throw to resist its effect). Firing the globe in a -later round is a standard action. - -Focus: A small crystal sphere. - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -int GetIsWaterElemental(object oTarget); - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - object oTarget; - location lTarget = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDice = PRCMin(40, nCasterLvl); - int nMetaMagic = PRCGetMetaMagicFeat(); - int eDamageType = ChangedElementalDamage(oPC, DAMAGE_TYPE_COLD); - int nDC, bIsElemental, nDam; - float fDelay; - effect eImp = EffectVisualEffect(VFX_IMP_FROST_S); - effect eVis = EffectVisualEffect(VFX_FNF_OTIL_COLDSPHERE); - effect eDam; - - nCasterLvl += SPGetPenetr(); - - // Apply AOE location explosion - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lTarget); - - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - - while(GetIsObjectValid(oTarget)) - { - // PvP Check - if(!GetIsReactionTypeFriendly(oTarget, oPC)) - { - // Get the distance between the explosion and the target to calculate delay - fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - - // Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_OTILUKES_FREEZING_SPHERE)); - - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl)) - { - // Damage - it is 1d8 for water elementals! - bIsElemental = GetIsWaterElemental(oTarget); - nDC = PRCGetSaveDC(oTarget, oPC); - - nDam = bIsElemental ? d8(nDice) : d6(nDice); - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDam = bIsElemental ? 8 * nDice : 6 * nDice; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDam += (nDam/2); - - nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nDC, SAVING_THROW_TYPE_COLD); - - // Need to do damage to apply visuals - if(nDam > 0) - { - eDam = PRCEffectDamage(oTarget, nDam, eDamageType); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImp, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - } - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - PRCSetSchool(); -} - -int GetIsWaterElemental(object oTarget) -{ - if(GetObjectType(oTarget) != OBJECT_TYPE_CREATURE) - return FALSE; - - int nAppearance = GetAppearanceType(oTarget); - if(nAppearance == APPEARANCE_TYPE_ELEMENTAL_WATER - || nAppearance == APPEARANCE_TYPE_ELEMENTAL_WATER_ELDER) - return TRUE; - - if(FindSubString(GetStringLowerCase(GetSubRace(oTarget)), "water elemental", 0) > -1) - return TRUE; - - return FALSE; -} diff --git a/_haks/poa_exp_spells/sp_panacea.ncs b/_haks/poa_exp_spells/sp_panacea.ncs deleted file mode 100644 index 731cd290..00000000 Binary files a/_haks/poa_exp_spells/sp_panacea.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_panacea.nss b/_haks/poa_exp_spells/sp_panacea.nss deleted file mode 100644 index 20ab55aa..00000000 --- a/_haks/poa_exp_spells/sp_panacea.nss +++ /dev/null @@ -1,102 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Panacea - Heals 1d8+1/lvl (max 1d8+20) hp, cures the following -// conditions: blinded, confused, dazed, deafened, diseased, -// frightened, paralyzed, poisoned, sleep, and stunned. -// -///////////////////////////////////////////////////////////////////// - -#include "prc_inc_sp_tch" -#include "prc_add_spell_dc" -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - // Get the target and raise the spell cast event. - object oTarget = PRCGetSpellTargetObject(); - // Compute the damage to add to the dice roll. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nAdd = nCasterLvl; - if (nAdd > 40) nAdd = 40; - int nPenetr = nCasterLvl + SPGetPenetr(); - - // If the target is not undead then heal it and remove all harmfull effects. If - // the target is undead then check for SR. - if (RACIAL_TYPE_UNDEAD != MyPRCGetRacialType(oTarget) - && !(GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)) - { - PRCSignalSpellEvent(oTarget, FALSE); - - // Look for detrimental effects and remove them. Removes the following effects: - // blinded, confused, dazed, deafened, diseased, frightened, paralyzed, - // poisoned, sleep, and stunned. - effect eEffect = GetFirstEffect(oTarget); - while (GetIsEffectValid(eEffect)) - { - // GetIsValidEffect() appears to be returning TRUE sometimes even for invalid effects so - // catch that here. - int nEffectType = GetEffectType(eEffect); - if (EFFECT_TYPE_INVALIDEFFECT == nEffectType) - { - PrintString("****EFFECT_TYPE_INVALIDEFFECT returned but GetIsValidEffect() returns TRUE"); - break; - } - - // catch all of the detrimental effects and remove them. - if (EFFECT_TYPE_BLINDNESS == nEffectType || - EFFECT_TYPE_CONFUSED == nEffectType || - EFFECT_TYPE_DAZED == nEffectType || - EFFECT_TYPE_DEAF == nEffectType || - EFFECT_TYPE_DISEASE == nEffectType || - EFFECT_TYPE_FRIGHTENED == nEffectType || - EFFECT_TYPE_PARALYZE == nEffectType || - EFFECT_TYPE_POISON == nEffectType || - EFFECT_TYPE_SLEEP == nEffectType || - EFFECT_TYPE_STUNNED == nEffectType) - RemoveEffect(oTarget, eEffect); - - eEffect = GetNextEffect(oTarget); - } - - // Roll the healing 'damage'. - int nHeal = PRCGetMetaMagicDamage(DAMAGE_TYPE_POSITIVE, 1, 8, 0, nAdd); - if (GetLevelByClass(CLASS_TYPE_HEALER, OBJECT_SELF)) - nHeal += GetAbilityModifier(ABILITY_CHARISMA, OBJECT_SELF); - - // Apply the healing and VFX. - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectHeal(nHeal, oTarget), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_M), oTarget); - } - else if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - PRCSignalSpellEvent(oTarget); - - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr)) - { - int nTouch = PRCDoMeleeTouchAttack(oTarget);; - if (nTouch > 0) - { - // Roll the damage (allowing for a critical) and let the target make a will save to - // halve the damage. - int nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_POSITIVE, 1 == nTouch ? 1 : 2, 8, 0, nAdd); - if (PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget,OBJECT_SELF))) - { - nDamage /= 2; - if (GetHasMettle(oTarget, SAVING_THROW_WILL)) // Ignores partial effects - { - nDamage = 0; - } - } - - // Apply damage and VFX. - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_POSITIVE), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SUNSTRIKE), oTarget); - } - } - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_phoenix_fire.ncs b/_haks/poa_exp_spells/sp_phoenix_fire.ncs deleted file mode 100644 index d53937f8..00000000 Binary files a/_haks/poa_exp_spells/sp_phoenix_fire.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_phoenix_fire.nss b/_haks/poa_exp_spells/sp_phoenix_fire.nss deleted file mode 100644 index 55332e76..00000000 --- a/_haks/poa_exp_spells/sp_phoenix_fire.nss +++ /dev/null @@ -1,172 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Phoenix Fire -//:: FileName sp_phoenix_fire.nss -//::////////////////////////////////////////////// -/** @file -Phoenix Fire -Necromancy [Fire, Good] -Level: Sanctified 7 -Components: V,S,F,Sacrifice -Range: 15 feet -Area: 15 foot radius spread, centered on you -Duration: Instantaneous (see text) -Saving Throw: Reflex half (see text) -Spell Resistance: Yes (see text) - -You immolate yourself, consuming your flesh in a -cloud of flame 20 feet high and 30 feet in diameter. -You die (no saving throw, and spell resistance does -not apply). Every evil creature within the cloud takes -2d6 points of damage per caster level (maximum 40d6). -Neutral characters take half damage (and a successful -Reflex save reduces that further in half), while good -characters take no damage at all. Half of the damage -dealt by the spell against any creature is fire; the -rest results directly from divine power and is -therefore not subject to being reduced by resistance -to fire-based attacks, such as that granted by -protection from energy(fire), fire shield(chill -shield), and similar magic. - -After 10 minutes, you rise from the ashes as if restored -to life by a resurrection spell. - -Sacrifice: Your death and the level you lose when you -return to life are the sacrifice cost for this spell. - -*/ -// Author: Tenjac -// Created: 1/6/2006 -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - - -void Counter(object oPC, int nCounter); - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - //Define vars - object oPC = OBJECT_SELF; - location lLoc = GetLocation(oPC); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDam; - float fDur = TurnsToSeconds(10); - - //Immolate VFX on caster - VFX_IMP_HOLY_AID for casting VFX - effect eFire = EffectVisualEffect(VFX_FNF_FIREBALL); - effect eDivine = EffectVisualEffect(VFX_FNF_STRIKE_HOLY); - - DelayCommand(0.3f, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oPC)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDivine, oPC); - - //VFX - ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_GHOST_SMOKE_2), lLoc, fDur); - - //"Kill" player - effect eLink = EffectLinkEffects(EffectCutsceneParalyze(), EffectCutsceneGhost()); - eLink = EffectLinkEffects(EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), eLink); - eLink = EffectLinkEffects(eLink, EffectEthereal()); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, fDur); - Counter(oPC, 10); - - SetPlotFlag(oPC, TRUE); - DelayCommand(fDur, SetPlotFlag(oPC, FALSE)); - DelayCommand(fDur, ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectHeal(GetMaxHitPoints(oPC), oPC), oPC)); - - //Get first object in shape - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lLoc, TRUE, OBJECT_TYPE_CREATURE); - - //While object valid - while(GetIsObjectValid(oTarget)) - { - if (!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl + SPGetPenetr())) - { - int nDC = PRCGetSaveDC(oTarget, oPC); - - //If alignment evil - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) - { - //Damage = 2d6/level - nDam = d6(PRCMin(60, (2 * nCasterLvl))); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (PRCMin(60, (2 * nCasterLvl))); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //Reflex save for 1/2 damage - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_GOOD)) - { - nDam = nDam/2; - } - - //Half divine, half fire - int nDiv = nDam/2; - nDam = nDam - nDiv; - - //Apply damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDiv, DAMAGE_TYPE_DIVINE), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE), oTarget); - } - - //If alignment neutral - else if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_NEUTRAL) - { - //Half damage for neutrality, Damage = 1d6 - nDam = d6(PRCMin(40,nCasterLvl)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (PRCMin(40,nCasterLvl)); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //Reflex for further 1/2 - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_GOOD)) - { - nDam = nDam/2; - } - - //Half divine, half fire - int nDiv = nDam/2; - nDam = nDam - nDiv; - - //Apply damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDiv, DAMAGE_TYPE_DIVINE), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE), oTarget); - } - } - //Get next object in shape - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lLoc, TRUE, OBJECT_TYPE_CREATURE); - } - - //Sanctified spells get mandatory 10 pt good adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE); - - PRCSetSchool(); - //SPGoodShift(oPC); -} - -void Counter(object oPC, int nCounter) -{ - FloatingTextStringOnCreature("Phoenix Fire: " + IntToString(nCounter) + " turns remaining until resurrection.", oPC); - nCounter--; - if(nCounter > 0) DelayCommand(TurnsToSeconds(1), Counter(oPC, nCounter)); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_pnp_frshld.ncs b/_haks/poa_exp_spells/sp_pnp_frshld.ncs deleted file mode 100644 index cc6778b3..00000000 Binary files a/_haks/poa_exp_spells/sp_pnp_frshld.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_pnp_frshld.nss b/_haks/poa_exp_spells/sp_pnp_frshld.nss deleted file mode 100644 index d4990c60..00000000 --- a/_haks/poa_exp_spells/sp_pnp_frshld.nss +++ /dev/null @@ -1,102 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name -//:: FileName sp_.nss -//::////////////////////////////////////////////// -/**@file Fire Shield -Evocation [Fire or Cold] -Level: Fire 5, Sor/Wiz 4, Sun 4 -Components: V, S, M/DF -Casting Time: 1 standard action -Range: Personal -Target: You -Duration: 1 round/level (D) - -This spell wreathes you in flame and causes damage -to each creature that attacks you in melee. The -flames also protect you from either cold-based or -fire-based attacks (your choice). - -Any creature striking you with its body or a -handheld weapon deals normal damage, but at the -same time the attacker takes 1d6 points of damage -+1 point per caster level (maximum +15). This -damage is either cold damage (if the shield -protects against fire-based attacks) or fire -damage (if the shield protects against cold-based -attacks). If the attacker has spell resistance, -it applies to this effect. Creatures wielding -weapons with exceptional reach are not subject to -this damage if they attack you. - -When casting this spell, you appear to immolate -yourself, but the flames are thin and wispy, -giving off light equal to only half the -illumination of a normal torch (10 feet). The -special powers of each version are as follows. - -Warm Shield: The flames are warm to the touch. -You take only half damage from cold-based attacks. -If such an attack allows a Reflex save for half -damage, you take no damage on a successful save. - -Chill Shield: The flames are cool to the touch. -You take only half damage from fire-based attacks. -If such an attack allows a Reflex save for half -damage, you take no damage on a successful save. - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oPC); - int nSpell = GetSpellId(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDam = PRCMin(40,nCasterLvl); - float fDur = RoundsToSeconds(nCasterLvl); - effect eShield; - effect eVis; - effect eReduce; - - //Extend - if(nMetaMagic & METAMAGIC_EXTEND) fDur += fDur; - - if(nSpell == SPELL_PNP_FIRE_SHIELD_RED) - { - eVis = EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD); - eShield = EffectDamageShield(nDam, DAMAGE_BONUS_1d6, ChangedElementalDamage(oPC, DAMAGE_TYPE_FIRE)); - eReduce = EffectDamageImmunityIncrease(DAMAGE_TYPE_COLD, 50); - - } - - else if(nSpell == SPELL_PNP_FIRE_SHIELD_BLUE) - { - eVis = EffectVisualEffect(VFX_DUR_CHILL_SHIELD); - eShield = EffectDamageShield(nDam, DAMAGE_BONUS_1d6, ChangedElementalDamage(oPC, DAMAGE_TYPE_COLD)); - eReduce = EffectDamageImmunityIncrease(DAMAGE_TYPE_FIRE, 50); - } - - else - { - PRCSetSchool(); - return; - } - - effect eLink = EffectLinkEffects(eShield, eVis); - eLink = EffectLinkEffects(eLink, eReduce); - - //apply - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, fDur, TRUE, nSpell, nCasterLvl); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_polar_ray.ncs b/_haks/poa_exp_spells/sp_polar_ray.ncs deleted file mode 100644 index 98ab5ec1..00000000 Binary files a/_haks/poa_exp_spells/sp_polar_ray.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_polar_ray.nss b/_haks/poa_exp_spells/sp_polar_ray.nss deleted file mode 100644 index 34037aca..00000000 --- a/_haks/poa_exp_spells/sp_polar_ray.nss +++ /dev/null @@ -1,117 +0,0 @@ -/* -Polar Ray - -Caster Level(s): Wizard / Sorcerer 8 -Innate Level: 8 -School: Evocation -Descriptor(s): Cold -Component(s): Verbal, Somatic -Range: Short -Area of Effect / Target: Single -Duration: Instant -Additional Counter Spells: -Save: None -Spell Resistance: Yes - -A blue-white ray of freezing air and ice springs from your hand. -You must succeed on a ranged touch attack with the ray to deal -damage to a target. The ray deals 1d6 points of cold damage per -caster level (maximum 25d6). -*/ - -//::Added hold ray functionality - HackyKid - - -#include "prc_inc_sp_tch" - -#include "prc_add_spell_dc" -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nDam = nCasterLevel; - // 25d6 Max - if (nDam > 60) nDam = 60; - nDam = d6(nDam); - effect eDam; - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - effect eRay = EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_HAND); - - int iAttackRoll = 0; - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RAY_OF_FROST)); - eRay = EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_HAND); - - iAttackRoll = PRCDoRangedTouchAttack(oTarget);; - if(iAttackRoll > 0) - { - //Make SR Check - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nPenetr)) - { - //Enter Metamagic conditions - if (CheckMetaMagic(nMetaMagic, METAMAGIC_MAXIMIZE)) - { - nDam = 6 * nCasterLevel;//Damage is at max - // 25 * 6 = 150, so its the most the spell can do. - // if (nDam > 400) nDam = 400; - } - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EMPOWER)) - { - nDam = nDam + nDam/2; //Damage/Healing is +50% - } - - // perform ranged touch attack and apply sneak attack if any exists - int eDamageType = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_COLD); - ApplyTouchAttackDamage(OBJECT_SELF, oTarget, iAttackRoll, nDam, eDamageType); - PRCBonusDamage(oTarget); - - //Apply the VFX impact and damage effect - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7,FALSE); - - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (GetLocalInt(oCaster, PRC_SPELL_HOLD) && GetHasFeat(FEAT_EF_HOLD_RAY, oCaster) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - if (oCaster != oTarget) //cant target self with this spell, only when holding charge - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_prism_wallA.ncs b/_haks/poa_exp_spells/sp_prism_wallA.ncs deleted file mode 100644 index c58c7d43..00000000 Binary files a/_haks/poa_exp_spells/sp_prism_wallA.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_prism_wallA.nss b/_haks/poa_exp_spells/sp_prism_wallA.nss deleted file mode 100644 index 4464119e..00000000 --- a/_haks/poa_exp_spells/sp_prism_wallA.nss +++ /dev/null @@ -1,213 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Prismatic Wall On Enter -//:: FileName sp_prism_wallA.nss -//::////////////////////////////////////////////// -/**@file Prismatic Wall -Abjuration -Level: Sor/Wiz 8 -Components: V, S -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Effect: Wall 4 ft./level wide, 2 ft./level high -Duration: 10 min./level (D) -Saving Throw: See text -Spell Resistance: See text - -Prismatic wall creates a vertical, opaque wall; a -shimmering, multicolored plane of light that -protects you from all forms of attack. The wall -flashes with seven colors, each of which has a -distinct power and purpose. The wall is immobile, -and you can pass through and remain near the wall -without harm. However, any other creature with -less than 8 HD that is within 20 feet of the wall -is blinded for 2d4 rounds by the colors if it -looks at the wall. - -The wall’s maximum proportions are 4 feet wide per -caster level and 2 feet high per caster level. A -prismatic wall spell cast to materialize in a -space occupied by a creature is disrupted, and -the spell is wasted. - -Each color in the wall has a special effect. The -accompanying table shows the seven colors of the -wall, the order in which they appear, their -effects on creatures trying to attack you or pass -through the wall, and the magic needed to negate -each color. - -The wall can be destroyed, color by color, in -consecutive order, by various magical effects; -however, the first color must be brought down -before the second can be affected, and so on. -A rod of cancellation or a mage’s disjunction -spell destroys a prismatic wall, but an -antimagic field fails to penetrate it. Dispel -magic and greater dispel magic cannot dispel -the wall or anything beyond it. Spell resistance -is effective against a prismatic wall, but the -caster level check must be repeated for each -color present. - -Color Order Effect of Color - -Red 1st Deals 20 points of fire damage (Reflex half). -Orange 2nd Deals 40 points of acid damage (Reflex half). -Yellow 3rd Deals 80 points of electricity damage (Reflex half). -Green 4th Poison (Kills; Fortitude partial for 1d6 points of Con damage instead). -Blue 5th Turned to stone (Fortitude negates). -Indigo 6th Will save or become insane (as insanity spell). -Violet 7th Creatures sent to another plane (Will negates). - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - object oPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - int nDC = PRCGetSaveDC(oTarget, oPC); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDam; - int nPenetr = nCasterLvl + SPGetPenetr(); - - if(!GetIsReactionTypeFriendly(oTarget, oPC) && (oTarget != oPC)) - { - //Red - if(!PRCDoResistSpell(oPC, oTarget,nPenetr)) - { - nDam = 20 + nPenetr; - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_FIRE)) - { - nDam = 10 + (nPenetr/2); - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE), oTarget); - } - - //Orange - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - nDam = 40 + nPenetr; - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_ACID)) - { - nDam = 20 + (nPenetr/2); - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ACID), oTarget); - } - - //Yellow - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - nDam = 80 + nPenetr; - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY)) - { - nDam = 40 + (nPenetr/2); - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ELECTRICAL), oTarget); - } - - //Green - if (PRCGetIsAliveCreature(oTarget) && (GetIsImmune(oTarget, IMMUNITY_TYPE_POISON) == FALSE)) - { - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON)) - { - DeathlessFrenzyCheck(oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); - } - - else ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, d6(1), DURATION_TYPE_TEMPORARY, TRUE, -1.0); - } - } - - //Blue - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) PRCDoPetrification(nCasterLvl, oPC, oTarget, SPELL_PRISMATIC_RAY, nDC); - - //Indigo - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) - { - effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S); - effect eConfuse = PRCEffectConfused(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eMind, eConfuse); - eLink = EffectLinkEffects(eLink, eDur); - eLink = SupernaturalEffect(eLink); - - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget, 0.0, TRUE, SPELL_PRISMATIC_SPHERE, nCasterLvl); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - - //Violet - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) - { - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget); - - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) - { - case 1: - { - nTalk = 1729332; - break; - } - - case 2: - { - nTalk = 1729333; - break; - } - - case 3: - { - nTalk = 1729334; - break; - } - - case 4: - { - nTalk = 1729335; - break; - } - - case 5: - { - nTalk = 1729336; - break; - } - - case 6: - { - nTalk = 1729337; - break; - } - } - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); - } - } - } -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_prismat_ray.ncs b/_haks/poa_exp_spells/sp_prismat_ray.ncs deleted file mode 100644 index 235197f2..00000000 Binary files a/_haks/poa_exp_spells/sp_prismat_ray.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_prismat_ray.nss b/_haks/poa_exp_spells/sp_prismat_ray.nss deleted file mode 100644 index f43264bf..00000000 --- a/_haks/poa_exp_spells/sp_prismat_ray.nss +++ /dev/null @@ -1,271 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Prismatic Ray -//:: FileName sp_prismat_ray.nss -//::////////////////////////////////////////////// -/**@file Prismatic Ray -Evocation -Level: Sorcerer/wizard 5 -Components: V, S -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Effect: Ray -Duration: Instantaneous -Saving Throw: See text -Spell Resistance: Yes - -A single beam of brilliantly colored -light shoots from your outstretched -hand. You must succeed on a ranged touch -attack with the ray to strike a target. -On a successful attack, a creature with -6 Hit Dice or fewer is blinded for 2d4 -rounds by the prismatic ray in addition -to suffering a randomly determined -effect: - -1d8 Color of Beam Effect - -1 Red 20 points fire damage(Reflex half) -2 Orange 40 points acid damage(Reflex half) -3 Yellow 80 points electricity damage (Reflex half) -4 Green Poison (Kills; Fortitude partial, take 1d6 Con damage instead) -5 Blue Turned to stone(Fortitude negates) -6 Indigo Insane, as insanity spell (Will negates) -7 Violet Sent to another plane(Will negates) -8 Two effects; roll twice more, ignoring any '8' results - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -void DoRay(object oTarget, int nSaveDC, int nRoll, int nCasterLvl, object oPC); - -#include "prc_inc_sp_tch" -#include "prc_add_spell_dc" -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nRoll = d8(1); - int bTwoRolls = FALSE; - int nBeamVisualEffect; - int nSaveDC = PRCGetSaveDC(oTarget, oPC); - int nTouch = PRCDoRangedTouchAttack(oTarget); - int nHD = GetHitDice(oTarget); - int nRoll2; - - switch(nRoll) - { - case 1: nBeamVisualEffect = VFX_BEAM_EVIL; - break; - - case 2: nBeamVisualEffect = VFX_BEAM_FIRE; - break; - - case 3: nBeamVisualEffect = VFX_BEAM_SILENT_HOLY; - break; - - case 4: nBeamVisualEffect = VFX_BEAM_DISINTEGRATE; - break; - - case 5: nBeamVisualEffect = VFX_BEAM_SILENT_COLD; - break; - - case 6: nBeamVisualEffect = VFX_BEAM_ODD; - break; - - case 7: nBeamVisualEffect = VFX_BEAM_MIND; - break; - - case 8: break; - } - - //VFX - effect eVis = EffectBeam(nBeamVisualEffect, oPC, BODY_NODE_HAND, !nTouch); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - if(nTouch) - { - //SR check - if(!PRCDoResistSpell(oPC, oTarget, (nCasterLvl + SPGetPenetr()))) - { - - //blind - if(nHD < 7) SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBlindness(), oTarget, RoundsToSeconds(d4(2))); - - if(nRoll == 8) - { - bTwoRolls = TRUE; - nRoll2 = d8(1); - - while(nRoll == 8) - { - nRoll = d8(1); - } - while (nRoll2 == 8) - { - nRoll2 = d8(1); - } - } - - DoRay(oTarget, nSaveDC, nRoll, nCasterLvl, oPC); - - if(bTwoRolls == TRUE) - { - if(!GetIsDead(oTarget)) //because let's face it; chances are good they are.... - { - DoRay(oTarget, nSaveDC, nRoll2, nCasterLvl, oPC); - } - } - } - } - PRCSetSchool(); -} - -void DoRay(object oTarget, int nSaveDC, int nRoll, int nCasterLvl, object oPC) -{ - int nDam; - switch(nRoll) - { - case 1: - { - nDam = 20 + (nCasterLvl/2); - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nSaveDC, SAVING_THROW_TYPE_FIRE)) - { - nDam = nDam/2; - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE), oTarget); - break; - } - - case 2: - { - nDam = 40 + (nCasterLvl/2); - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nSaveDC, SAVING_THROW_TYPE_ACID)) - { - nDam = nDam/2; - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ACID), oTarget); - break; - } - - case 3: - { - nDam = 80 + (nCasterLvl/2); - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nSaveDC, SAVING_THROW_TYPE_ELECTRICITY)) - { - nDam = nDam/2; - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ELECTRICAL), oTarget); - break; - } - - case 4: - { - if (PRCGetIsAliveCreature(oTarget) && (GetIsImmune(oTarget, IMMUNITY_TYPE_POISON) == FALSE)) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_POISON)) - { - DeathlessFrenzyCheck(oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); - } - - else ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, d6(1), DURATION_TYPE_TEMPORARY, TRUE, -1.0); - } - break; - } - - case 5: - { - PRCDoPetrification(nCasterLvl, oPC, oTarget, SPELL_PRISMATIC_RAY, nSaveDC); - break; - } - - case 6: - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nSaveDC, SAVING_THROW_TYPE_SPELL)) - { - effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S); - effect eConfuse = PRCEffectConfused(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eMind, eConfuse); - eLink = EffectLinkEffects(eLink, eDur); - eLink = SupernaturalEffect(eLink); - - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget, 0.0, TRUE,-1,nCasterLvl); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - break; - } - - case 7: - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nSaveDC, SAVING_THROW_TYPE_SPELL)) - { - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget); - - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) - { - case 1: - { - nTalk = 1729332; - break; - } - - case 2: - { - nTalk = 1729333; - break; - } - - case 3: - { - nTalk = 1729334; - break; - } - - case 4: - { - nTalk = 1729335; - break; - } - - case 5: - { - nTalk = 1729336; - break; - } - - case 6: - { - nTalk = 1729337; - break; - } - } - - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); - } - } - } -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_prismt_sphrA.ncs b/_haks/poa_exp_spells/sp_prismt_sphrA.ncs deleted file mode 100644 index 33dcf5e4..00000000 Binary files a/_haks/poa_exp_spells/sp_prismt_sphrA.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_prismt_sphrA.nss b/_haks/poa_exp_spells/sp_prismt_sphrA.nss deleted file mode 100644 index 21745de7..00000000 --- a/_haks/poa_exp_spells/sp_prismt_sphrA.nss +++ /dev/null @@ -1,215 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Prismatic Sphere on enter -//:: FileName sp_prismt_sphrA.nss -//::////////////////////////////////////////////// -/**@file Prismatic Sphere -Abjuration -Level: Protection 9, Sor/Wiz 9, Sun 9 -Components: V -Range: 10 ft. -Effect: 10-ft.-radius sphere centered on you - -This spell functions like prismatic wall, except you -conjure up an immobile, opaque globe of shimmering, -multicolored light that surrounds you and protects -you from all forms of attack. The sphere flashes in -all colors of the visible spectrum. - -The sphere’s blindness effect on creatures with less -than 8 HD lasts 2d4x10 minutes. - -You can pass into and out of the prismatic sphere and -remain near it without harm. However, when you’re -inside it, the sphere blocks any attempt to project -something through the sphere (including spells). Other -creatures that attempt to attack you or pass through -suffer the effects of each color, one at a time. - -Typically, only the upper hemisphere of the globe will -exist, since you are at the center of the sphere, so -the lower half is usually excluded by the floor surface -you are standing on. - -The colors of the sphere have the same effects as the -colors of a prismatic wall. - -Red 1st Deals 20 points of fire damage (Reflex half). -Orange 2nd Deals 40 points of acid damage (Reflex half). -Yellow 3rd Deals 80 points of electricity damage (Reflex half). -Green 4th Poison (Kills; Fortitude partial for 1d6 points of Con damage instead). -Blue 5th Turned to stone (Fortitude negates). -Indigo 6th Will save or become insane (as insanity spell). -Violet 7th Creatures sent to another plane (Will negates). - -Author: Tenjac -Created: 7/6/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - object oPC = GetAreaOfEffectCreator(); - object oTarget = GetEnteringObject(); - int nDC = PRCGetSaveDC(oTarget, oPC); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDam; - int nPenetr = nCasterLvl + SPGetPenetr(); - - //Passing into the wall - SetLocalInt(oTarget, "PRC_INSIDE_PRISMATIC_SPHERE", 1); - - if(!GetIsReactionTypeFriendly(oTarget, oPC) && (oTarget != oPC)) - { - //Red - if(!PRCDoResistSpell(oPC, oTarget,nPenetr)) - { - nDam = 20 + nPenetr; - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_FIRE)) - { - nDam = 10 + nPenetr; - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE), oTarget); - } - - //Orange - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - nDam = 40 + nPenetr; - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_ACID)) - { - nDam = 20 + nPenetr; - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ACID), oTarget); - } - - //Yellow - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - nDam = 80 + nPenetr; - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY)) - { - nDam = 40 + nPenetr; - } - - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ELECTRICAL), oTarget); - } - - //Green - if (PRCGetIsAliveCreature(oTarget) && (GetIsImmune(oTarget, IMMUNITY_TYPE_POISON) == FALSE)) - { - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON)) - { - DeathlessFrenzyCheck(oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); - } - - else ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, d6(1), DURATION_TYPE_TEMPORARY, TRUE, -1.0); - } - } - - //Blue - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) PRCDoPetrification(nCasterLvl, oPC, oTarget, SPELL_PRISMATIC_RAY, nDC); - - //Indigo - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) - { - effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S); - effect eConfuse = PRCEffectConfused(); - effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eMind, eConfuse); - eLink = EffectLinkEffects(eLink, eDur); - eLink = SupernaturalEffect(eLink); - - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget, 0.0, TRUE, SPELL_PRISMATIC_SPHERE, nCasterLvl); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - - //Violet - if(!PRCDoResistSpell(oPC, oTarget, nPenetr)) - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) - { - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget); - - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) - { - case 1: - { - nTalk = 1729332; - break; - } - - case 2: - { - nTalk = 1729333; - break; - } - - case 3: - { - nTalk = 1729334; - break; - } - - case 4: - { - nTalk = 1729335; - break; - } - - case 5: - { - nTalk = 1729336; - break; - } - - case 6: - { - nTalk = 1729337; - break; - } - } - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); - } - } - } -} - - - - - - - - - - - - - - - - - - diff --git a/_haks/poa_exp_spells/sp_prot_arrows.ncs b/_haks/poa_exp_spells/sp_prot_arrows.ncs deleted file mode 100644 index ef69e4da..00000000 Binary files a/_haks/poa_exp_spells/sp_prot_arrows.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_prot_arrows.nss b/_haks/poa_exp_spells/sp_prot_arrows.nss deleted file mode 100644 index fdc5c57c..00000000 --- a/_haks/poa_exp_spells/sp_prot_arrows.nss +++ /dev/null @@ -1,61 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Protection from Arrows -//:: FileName sp_prot_arrows.nss -//::////////////////////////////////////////////// -/**@file Protection from Arrows -Abjuration -Level: Sor/Wiz 2, Hexblade 2 -Components: V, S, F -Casting Time: 1 standard action -Range: Touch -Target: Creature touched -Duration: 1 hour/level or until discharged -Saving Throw: Will negates (harmless) -Spell Resistance: Yes (harmless) - -The warded creature gains resistance to ranged weapons. -The subject gains damage reduction 10/magic against -ranged weapons. (This spell doesn’t grant you the -ability to damage creatures with similar damage -reduction.) Once the spell has prevented a total of -10 points of damage per caster level (maximum 100 -points), it is discharged. - -Focus: A piece of shell from a tortoise or a turtle. - -**/ - -////////////////////////////////////////////////// -// Author: Tenjac -// Date: 16.9.2006 -///////////////////////////////////////////////// - -#include "prc_alterations" -#include "prc_inc_spells" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - float fDur = HoursToSeconds(nCasterLvl); - int nMetaMagic = PRCGetMetaMagicFeat(); - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - PRCSignalSpellEvent(oTarget,FALSE, SPELL_PROTECTION_FROM_ARROWS, oPC); - - // Damage Resistance 10 piercing, max of 100 total - effect eBuff = EffectLinkEffects(EffectDamageResistance(DAMAGE_TYPE_PIERCING, 10+(nCasterLvl/4), PRCMin((10 * nCasterLvl), 100)), EffectVisualEffect(VFX_DUR_PROTECTION_ARROWS)); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBuff, oTarget, fDur); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_rain_btul.ncs b/_haks/poa_exp_spells/sp_rain_btul.ncs deleted file mode 100644 index ad352c33..00000000 Binary files a/_haks/poa_exp_spells/sp_rain_btul.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_rain_btul.nss b/_haks/poa_exp_spells/sp_rain_btul.nss deleted file mode 100644 index 372db97b..00000000 --- a/_haks/poa_exp_spells/sp_rain_btul.nss +++ /dev/null @@ -1,93 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Rain of Black Tulips -//:: FileName sp_rain_btul.nss -//::////////////////////////////////////////////// -/**@file Rain of Black Tulips -Evocation [Good] -Level: Drd 9 -Components: V, S, M -Casting Time: 1 standard action -Range: Long (400 ft. + 40 ft./level) -Area: Cylinder (80-ft. radius, 80 ft. high) -Duration: 1 round/level (D) -Saving Throw: None (damage), Fortitude negates (nausea) -Spell Resistance: Yes - -Tulips as black as midnight fall from the sky. The -tulips explode with divine energy upon striking evil -creatures, each of which takes 5d6 points of damage. -In addition, evil creatures that fail a Fortitude -save are nauseated (unable to attack, cast spells, -concentrate on spells, perform any task requiring -concentration, or take anything other than a single -move action per turn) until they leave the spell's -area. A successful Fortitude save renders a creature -immune to the nauseating effect of the tulips, but -not the damage. - -Material Component: A black tulip. - -Author: Tenjac -Created: 7/14/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oPC); - effect eAOE = EffectAreaOfEffect(VFX_AOE_RAIN_OF_BLACK_TULIPS); - location lLoc = PRCGetSpellTargetLocation(); - int nMetaMagic = PRCGetMetaMagicFeat(); - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 24.38f, lLoc, FALSE, OBJECT_TYPE_CREATURE); - int nDam; - int nAlign; - float fDur = RoundsToSeconds(nCasterLvl); - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - //Create AoE - ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lLoc, fDur); - - object oAoE = GetAreaOfEffectObject(lLoc, "VFX_AOE_RAIN_OF_BLACK_TULIPS"); - SetAllAoEInts(SPELL_RAIN_OF_BLACK_TULIPS, oAoE, PRCGetSpellSaveDC(SPELL_RAIN_OF_BLACK_TULIPS, SPELL_SCHOOL_EVOCATION), 0, nCasterLvl); - - //Loop through and damage creatures - while(GetIsObjectValid(oTarget)) - { - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) - { - //SR - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - nDam = d6(5+nCasterLvl); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6*(5+nCasterLvl); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 24.38f, lLoc, FALSE, OBJECT_TYPE_CREATURE); - } - //SPGoodShift(oPC); - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_rain_ember.ncs b/_haks/poa_exp_spells/sp_rain_ember.ncs deleted file mode 100644 index b5df8766..00000000 Binary files a/_haks/poa_exp_spells/sp_rain_ember.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_rain_ember.nss b/_haks/poa_exp_spells/sp_rain_ember.nss deleted file mode 100644 index ce0a1151..00000000 --- a/_haks/poa_exp_spells/sp_rain_ember.nss +++ /dev/null @@ -1,135 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Rain of Embers -//:: FileName sp_rain_ember.nss -//::////////////////////////////////////////////// -/**@file Rain of Embers -Evocation [Fire, Good] -Level: Sanctified 7 -Components: V, S, Sacrifice -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Area: Cylinder (40-ft. radius, 120 ft. high) -Duration: 1 round/level (D) -Saving Throw: Reflex half; see text -Spell Resistance: Yes - -This spell causes orange, star-like embers to rain -steadily from above. Each round, the falling embers -deal 10d6 points of damage to evil creatures within -the spell's area. Half of the damage is fire damage, -but the other half results directly from divine -power and is therefore not subject to being reduced -by resistance to fire-based attacks, such as that -granted by protection from energy (fire), -fire shield (chill shield), and similar magic. -Creatures may leave the area to avoid taking -additional damage, but a new saving throw is required -each round a creature is caught in the Fiery downpour. - -A shield provides a cover bonus on the Reflex save, -depending on its size small +2, large +4, tower +7. -A shield spell oriented upward provides a +4 cover -bonus on the Reflex save. A creature using its -shield (or shield spell) to block the rain of embers -cannot use it for defense in combat. - -Sacrifice: 1d2 points of Strength drain. - -Author: Tenjac -Created: 6/21/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -void EmberLoop(int nCounter, int nCasterLvl, int nMetaMagic, object oPC, location lLoc); - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - location lLoc = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oPC); - float fDur = RoundsToSeconds(nCasterLvl); - int nCounter = FloatToInt(fDur/6); - int nMetaMagic = PRCGetMetaMagicFeat(); - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - //VFX - ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_FNF_FIRESTORM), lLoc, fDur); - - EmberLoop(nCounter, nCasterLvl, nMetaMagic, oPC, lLoc); - - DoCorruptionCost(oPC, ABILITY_STRENGTH, d2(), 1); - - //Sanctified spells get mandatory 10 pt good adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE); - - PRCSetSchool(); - //SPGoodShift(oPC); -} - -void EmberLoop(int nCounter, int nCasterLvl, int nMetaMagic, object oPC, location lLoc) -{ - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 12.19f, lLoc, FALSE, OBJECT_TYPE_CREATURE); - int nDam; - int nDam2; - - while(GetIsObjectValid(oTarget)) - { - if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) - { - //Spell Resist - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl + SPGetPenetr())) - { - int nDC = PRCGetSaveDC(oTarget, oPC); - //Save - - nDam = d6(10+nCasterLvl); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6*(10+nCasterLvl); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - if (PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_GOOD)) - { - nDam = (nDam/2); - } - - nDam2 = (nDam/2); - nDam = (nDam - nDam2); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam2, DAMAGE_TYPE_DIVINE), oTarget); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 12.19f, lLoc, FALSE, OBJECT_TYPE_CREATURE); - } - nCounter--; - - if(nCounter > 0) - { - DelayCommand(6.0f, EmberLoop(nCounter, nCasterLvl, nMetaMagic, oPC, lLoc)); - } -} - - - - - - - \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_rainbow_blast.ncs b/_haks/poa_exp_spells/sp_rainbow_blast.ncs deleted file mode 100644 index fcec3185..00000000 Binary files a/_haks/poa_exp_spells/sp_rainbow_blast.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_rainbow_blast.nss b/_haks/poa_exp_spells/sp_rainbow_blast.nss deleted file mode 100644 index d96dfdcb..00000000 --- a/_haks/poa_exp_spells/sp_rainbow_blast.nss +++ /dev/null @@ -1,211 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Rainbow Blast -//:: FileName sp_rainbow_blast.nss -//::////////////////////////////////////////////// -/**@file Rainbow Blast -Evocation [Light] -Level: Sorcerer/wizard 3 -Components: V, S, M -Casting Time: 1 standard action -Range: 120 ft. -Area: 120-ft. line -Duration: Instantaneous -Saving Throw: Reflex half -Spell Resistance: Yes - -This spell is a wide-spectrum blast of -radiant energy composed of all five -energy types. Rainbow blast deals 1d6 -points of damage from each of the five -energy types (acid, cold, electricity, -fire, and sonic), for a total of 5d6 points -of damage. Creatures apply resistance -to energy separately for each type of -damage. -As you gain in levels, the damage -die increases in size. At 7th level the -spell deals 5d8 points of damage, at 9th -level it deals 5d10 points of damage, -and at 11th level it deals 5d12 points of -damage; one die for each of the five -energy types. -Focus: A small clear gem or crystal -prism worth at least 50 gp. - -Author: Tenjac -Created: 6/28/07 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "spinc_bolt" - -int GetDieType(int nCasterLevel) -{ - - if(nCasterLevel > 20) return 22; - if(nCasterLevel > 18) return 20; - if(nCasterLevel > 16) return 18; - if(nCasterLevel > 14) return 16; - if(nCasterLevel > 12) return 14; - if(nCasterLevel > 10) return 12; - if(nCasterLevel > 8) return 10; - if(nCasterLevel > 6) return 8; - return 6; -} - -void DoBoltVFX(location lCaster, location lTarget) -{ - // Do VFX. This is moderately heavy, so it isn't duplicated by Twin Power - float fAngle = GetRelativeAngleBetweenLocations(lCaster, lTarget); - float fRadius = FeetToMeters(5.0f); - float fVFXLength = GetVFXLength(lCaster, 36.6f, GetRelativeAngleBetweenLocations(lCaster, lTarget)); - // A tube of beams, radius 5ft, starting 1m from manifester and running for the length of the line - BeamGengon(DURATION_TYPE_TEMPORARY, VFX_BEAM_MIND, lCaster, fRadius, fRadius, - 1.0f, fVFXLength, // Start 1m from the manifester, end at LOS end - 8, // 8 sides - 4.5f, "prc_invisobj", - 0.0f, // Drawn instantly - 0.0f, 0.0f, 45.0f, "y", fAngle, 0.0f, - -1, -1, 0.0f, 1.0f, // No secondary VFX - 4.5f - ); -} - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oCaster = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - location lCaster = GetLocation(OBJECT_SELF); - vector vOrigin = GetPosition(OBJECT_SELF); - - int nCasterLevel = PRCGetCasterLevel(); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nDieSides = GetDieType(nCasterLevel); - - DoBoltVFX(lCaster, lTarget); - - int nDamage; - int nSaveDC; - float fDelay; - - - // individual effect - effect eDamage; - - // spell damage effects - // Loop over targets in the spell shape - object oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, 36.6f, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, vOrigin); - while(GetIsObjectValid(oTarget)) - { - if(oTarget != oCaster && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - // Let the AI know - PRCSignalSpellEvent(oTarget, TRUE, SPELL_RAINBOW_BLAST, oCaster); - - // Make an SR check - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - nSaveDC = PRCGetSaveDC(oTarget, OBJECT_SELF); - - fDelay = GetDistanceBetweenLocations(lCaster, GetLocation(oTarget)) / 20.0f; - - // Roll fire damage - nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_FIRE, 1, nDieSides); - // Adjust damage according to Reflex Save, Evasion or Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, SAVING_THROW_TYPE_FIRE); - if(nDamage > 0) - { - eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_FIRE); - DelayCommand(1.0f + fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget)); - DelayCommand(1.0f + fDelay, PRCBonusDamage(oTarget)); - DelayCommand(1.0f + fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_S), oTarget)); - }// end if - There was still damage remaining to be dealt after adjustments - - // Roll acid damage - nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_ACID, 1, nDieSides); - // Adjust damage according to Reflex Save, Evasion or Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, SAVING_THROW_TYPE_ACID); - if(nDamage > 0) - { - eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ACID); - DelayCommand(1.0f + fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget)); - DelayCommand(1.0f + fDelay, PRCBonusDamage(oTarget)); - DelayCommand(1.0f + fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_ACID_S), oTarget)); - }// end if - There was still damage remaining to be dealt after adjustments - - // Roll cold damage - nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_COLD, 1, nDieSides); - // Cold has a fort save for half - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_COLD)) - { - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - nDamage = 0; - nDamage /= 2; - } - - if(nDamage > 0) - { - eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD); - DelayCommand(1.0f + fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget)); - DelayCommand(1.0f + fDelay, PRCBonusDamage(oTarget)); - DelayCommand(1.0f + fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FROST_S), oTarget)); - }// end if - There was still damage remaining to be dealt after adjustments - - // Roll electrical damage - nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_ELECTRICAL, 1, nDieSides); - // Adjust damage according to Reflex Save, Evasion or Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, SAVING_THROW_TYPE_ELECTRICITY); - if(nDamage > 0) - { - eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ELECTRICAL); - DelayCommand(1.0f + fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget)); - DelayCommand(1.0f + fDelay, PRCBonusDamage(oTarget)); - DelayCommand(1.0f + fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_S), oTarget)); - }// end if - There was still damage remaining to be dealt after adjustments - - // Roll sonic damage - nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_SONIC, 1, nDieSides); - // Adjust damage according to Reflex Save, Evasion or Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, SAVING_THROW_TYPE_SONIC); - if(nDamage > 0) - { - eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_SONIC); - DelayCommand(1.0f + fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget)); - DelayCommand(1.0f + fDelay, PRCBonusDamage(oTarget)); - DelayCommand(1.0f + fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SONIC), oTarget)); - }// end if - There was still damage remaining to be dealt after adjustments - }// end if - SR check - }// end if - Target validity check - - // Get next target - oTarget = MyNextObjectInShape(SHAPE_SPELLCYLINDER, 36.6f, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, vOrigin); - }// end while - Target loop - - PRCSetSchool(); -} - - - - - - - - - - - - - - - - - - - - diff --git a/_haks/poa_exp_spells/sp_raptr_ruptr.ncs b/_haks/poa_exp_spells/sp_raptr_ruptr.ncs deleted file mode 100644 index 4de6ed44..00000000 Binary files a/_haks/poa_exp_spells/sp_raptr_ruptr.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_raptr_ruptr.nss b/_haks/poa_exp_spells/sp_raptr_ruptr.nss deleted file mode 100644 index 5c3241ed..00000000 --- a/_haks/poa_exp_spells/sp_raptr_ruptr.nss +++ /dev/null @@ -1,188 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Rapture of Rupture -//:: FileName sp_rapt_rupt.nss -//::////////////////////////////////////////////// -/** @file -Rapture of Rupture -Transmutation [Evil] -Level: Corrupt 7 -Components: V, S, Corrupt -Casting Time: 1 action -Range: Touch -Target: One living creature touched per level -Duration: Instantaneous -Saving Throw: Fortitude half -Spell Resistance: Yes - -With this spell, the caster's touch deals grievous -wounds to multiple targets. After rapture of rupture -is cast, the caster can touch one target per round -until she has touched a number of targets equal to -her caster level. The same creature cannot be -affected twice by the same rapture of rupture. A -creature with no discernible anatomy is unaffected by -this spell. - -When the caster touches a subject, his flesh bursts -open suddenly in multiple places. Each subject takes -6d6 points of damage and is stunned for 1 round; a -successful Fortitude save reduces damage by half and -negates the stun effect. Subjects who fail their -Fortitude save continue to take 1d6 points of damage -per round until they receive magical healing, succeed -at a Heal check (DC 20), or die. If a subject takes 6 -points of damage from rapture of rupture in a single -round, he is stunned in the following round. - -Corruption Cost: 1 point of Strength damage per target -touched. - -*/ -// Author: Tenjac -// Created: 5/31/2006 -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_sp_tch" -#include "prc_sp_func" -#include "prc_add_spell_dc" - -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent, string sScript); -void WoundLoop(object oTarget, int nDamage = 0); - - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - - /*if(GetRunningEvent() == EVENT_VIRTUAL_ONDAMAGED) - { - ConcentrationLossCode(oCaster, GetLocalObject(oCaster, PRC_SPELL_CONC_TARGET), nCasterLevel); - return; - }*/ - - object oTarget = PRCGetSpellTargetObject(); - int nSpellID = GetSpellId(); - string sScript = Get2DACache("spells", "ImpactScript", nSpellID); - - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, PRCGetCasterLevel(oCaster)); - - // Setup target tracking set. If one remains from a previous casting, delete it first - if(set_exists(oCaster, "PRC_Spell_RoRTargets")) - set_delete(oCaster, "PRC_Spell_RoRTargets"); - set_create(oCaster, "PRC_Spell_RoRTargets"); - - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent, sScript); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent, sScript)) - DecrementSpellCharges(oCaster); - } - } - - //SPEvilShift(oCaster); - - //Corrupt spells get mandatory 10 pt evil adjustment, regardless of switch - AdjustAlignment(oCaster, ALIGNMENT_EVIL, 10, FALSE); - - PRCSetSchool(); -} - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent, string sScript) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - string sCaster = GetLocalString(oCaster, "PRCRuptureID"); - string sTest = GetLocalString(oTarget, "PRCRuptureTargetID"); - - // Roll to hit - int iAttackRoll = PRCDoMeleeTouchAttack(oTarget); - if (iAttackRoll > 0) - { - // Target validity check - should not have been targeted before - // and should have discernible anatomy (excludes constructs, elementals, oozes, plants, undead) - int nRace = MyPRCGetRacialType(oTarget); - if(!set_contains_object(oCaster, "PRC_Spell_RoRTargets", oTarget) && - nRace != RACIAL_TYPE_CONSTRUCT && - nRace != RACIAL_TYPE_ELEMENTAL && - nRace != RACIAL_TYPE_OOZE && - //nRace != RACIAL_TYPE_PLANT && - nRace != RACIAL_TYPE_UNDEAD - ) - { - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - // Roll damage and apply metamagic - int nDam = d6(6+nPenetr); - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDam = 6*(6+nPenetr); - if(nMetaMagic & METAMAGIC_EMPOWER) - nDam += nDam / 2; - - // Save for half damage - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_EVIL)) - { - nDam /= 2; - - // If the target has Mettle, do no damage. However, the target will still count as having been affected by the spell - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - nDam = 0; - } - // On failed save, stun for a round and start bleeding - else - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, 6.0f); - WoundLoop(oTarget); // Init the wound loop. This will deal d6 damage, which in turn determines whether the target will be stunned again next round - } - - // Apply Damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - - // If this spell was a held charge, it can have multiple targets. So we need to keep track of who has been already affected - if(nEvent) - set_add_object(oCaster, "PRC_Spell_RoRTargets", oTarget); - } - } - - // Corruption cost is paid whenever something is hit - DoCorruptionCost(oCaster, ABILITY_STRENGTH, 1, 0); - } - - // Return the result of the touch attack, will be used to determine whether to reduce number of touch attacks remaining - return iAttackRoll; -} - -void WoundLoop(object oTarget, int nDamage = 0) -{ - // If previous round's damage roll was 6, stun this round - if(nDamage == 6) - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, 6.0f); - - // Roll and apply new damage - nDamage = d6(); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL), oTarget); - - DelayCommand(6.0f, WoundLoop(oTarget, nDamage)); -} diff --git a/_haks/poa_exp_spells/sp_right_smt.ncs b/_haks/poa_exp_spells/sp_right_smt.ncs deleted file mode 100644 index 77617c07..00000000 Binary files a/_haks/poa_exp_spells/sp_right_smt.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_right_smt.nss b/_haks/poa_exp_spells/sp_right_smt.nss deleted file mode 100644 index bf67fd2c..00000000 --- a/_haks/poa_exp_spells/sp_right_smt.nss +++ /dev/null @@ -1,121 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Righteous Smite -//:: FileName sp_right_smt.nss -//::////////////////////////////////////////////// -/**@file Righteous Smite -Evocation [Good] -Level: Clr 7, exalted arcanist 7, Wrath 7 -Components: V, S -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Area: 20-ft. radius spread -Duration: Instantaneous -Saving Throw: Will partial; see text -Spell Resistance: Yes - -You draw down holy power to smite your enemies. Only -evil and neutral creatures are harmed by the spell; -good creatures are unaffected. - -The spell deals 1d6 points of damage per caster -level (maximum 20d6) to evil creatures (or 1d8 -points of damage per caster level, maximum 20d8, -to evil outsiders) and blinds them for 1d4 rounds. -A successful Will saving throw reduces damage to -half and negates the blinding effect. - -The spell deals only half damage against creatures -that are neither good nor evil, and they are not -blinded. They can reduce that damage by half (down -to one quarter of the roll) with a successful Will -save. - -Author: Tenjac -Created: 6/22/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - location lLoc = PRCGetSpellTargetLocation(); - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 6.10, lLoc, FALSE, OBJECT_TYPE_CREATURE); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDam; - int nAlign; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDC; - float fDur = RoundsToSeconds(d4(1)); - - while(GetIsObjectValid(oTarget)) - { - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl + SPGetPenetr())) - { - nAlign = GetAlignmentGoodEvil(oTarget); - nDC = PRCGetSaveDC(oTarget, oPC); - - if((MyPRCGetRacialType(oTarget) == RACIAL_TYPE_OUTSIDER) && (nAlign == ALIGNMENT_EVIL)) - { - nDam = d8(PRCMin(nCasterLvl, 20+nCasterLvl)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 8 * (PRCMin(nCasterLvl, 20+nCasterLvl)); - } - } - - else - { - nDam = d6(PRCMin(nCasterLvl, 20+nCasterLvl)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (PRCMin(nCasterLvl, 20+nCasterLvl)); - } - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //Save for 1/2 - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) - { - if(nAlign == ALIGNMENT_EVIL) - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBlindness(), oTarget, fDur); - } - else - { - if (GetHasMettle(oTarget, SAVING_THROW_WILL)) - // This script does nothing if it has Mettle, bail - return; - nDam = (nDam/2); - } - - if(nAlign == ALIGNMENT_NEUTRAL) - { - // neutral takes 1/2 damage - nDam = (nDam/2); - } - - //Deal damage to non-good - if(nAlign != ALIGNMENT_GOOD) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 6.10, lLoc, FALSE, OBJECT_TYPE_CREATURE); - } - //SPGoodShift(oPC); - PRCSetSchool(); -} - - \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_rightmt.ncs b/_haks/poa_exp_spells/sp_rightmt.ncs deleted file mode 100644 index 090b8f9e..00000000 Binary files a/_haks/poa_exp_spells/sp_rightmt.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_rightmt.nss b/_haks/poa_exp_spells/sp_rightmt.nss deleted file mode 100644 index 2c4ac7a8..00000000 --- a/_haks/poa_exp_spells/sp_rightmt.nss +++ /dev/null @@ -1,48 +0,0 @@ -#include "prc_inc_spells" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - - // Get the target and raise the spell cast event. - object oTarget = PRCGetSpellTargetObject(); - PRCSignalSpellEvent(oTarget, FALSE); - - // Determine the spell's duration, taking metamagic feats into account. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - float fDuration = PRCGetMetaMagicDuration(RoundsToSeconds(nCasterLvl)); - - // Calculate the proper DR. - int nDR = 5; - if (nCasterLvl >= 12) nDR = 10; - if (nCasterLvl >= 15) nDR = 15; - if (nCasterLvl >= 17) nDR = 16; - if (nCasterLvl >= 19) nDR = 17; - if (nCasterLvl >= 21) nDR = 18; - if (nCasterLvl >= 23) nDR = 19; - if (nCasterLvl >= 25) nDR = 20; - if (nCasterLvl >= 27) nDR = 21; - if (nCasterLvl >= 29) nDR = 22; - if (nCasterLvl >= 31) nDR = 23; - if (nCasterLvl >= 33) nDR = 24; - if (nCasterLvl >= 35) nDR = 25; - if (nCasterLvl >= 37) nDR = 26; - if (nCasterLvl >= 39) nDR = 27; - if (nCasterLvl >= 41) nDR = 28; - - // Create the chain of buffs to apply, including the vfx. - effect eBuff = EffectAbilityIncrease(ABILITY_STRENGTH, 8); - eBuff = EffectLinkEffects (eBuff, EffectAbilityIncrease(ABILITY_CONSTITUTION, 4)); - eBuff = EffectLinkEffects (eBuff, EffectACIncrease(4, AC_NATURAL_BONUS)); - eBuff = EffectLinkEffects (eBuff, EffectDamageReduction(nDR, DAMAGE_POWER_PLUS_TWO)); - eBuff = EffectLinkEffects (eBuff, EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MAJOR)); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3), oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBuff, oTarget, fDuration,TRUE,-1,nCasterLvl); -// SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_RESTORATION_GREATER), oTarget); - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_ring_bldsC.ncs b/_haks/poa_exp_spells/sp_ring_bldsC.ncs deleted file mode 100644 index 46437456..00000000 Binary files a/_haks/poa_exp_spells/sp_ring_bldsC.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_ring_bldsC.nss b/_haks/poa_exp_spells/sp_ring_bldsC.nss deleted file mode 100644 index 1aa8c7e7..00000000 --- a/_haks/poa_exp_spells/sp_ring_bldsC.nss +++ /dev/null @@ -1,69 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Ring of Blades HB -//:: FileName sp_ring_bldsc.nss -//::////////////////////////////////////////////// -/**@file Ring of Blades -Conjuration (Creation) -Level: Cleric 3, warmage 3 -Components: V,S, M -Casting Time: 1 standard action -Range: Personal -Target: You -Duration: 1 min./level - -This spell conjures a horizontal ring -of swirling metal blades around you. -The ring extends 5 feet from you, into -all squares adjacent to your space, and -it moves with you as you move. Each -round on your turn, starting when -you cast the spell, the blades deal 1d6 -points of damage +1 point per caster -level (maximum +10) to all creatures -in the affected area. - -The blades conjured by a lawful-aligned -cleric are cold iron, those conjured by -a chaotic-aligned cleric are silver, and -those conjured by a cleric who is neither -lawful nor chaotic are steel. - -Author: Tenjac -Created: 7/6/07 - -Fixed so it finally worked -Strat, Mar 7th, 2019 - -Yeah, it's been totally non-functional for 12 years. -Yay for not testing your shit. -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - if (!GetIsObjectValid(GetAreaOfEffectCreator())) - { - DestroyObject(OBJECT_SELF); - return; - } - - //Declare major variables - object oShadow = GetAreaOfEffectCreator(); - int nCasterLvl = PRCGetCasterLevel(oShadow); - - //Capture the first target object in the shape. - object oTarget = GetFirstInPersistentObject(OBJECT_SELF, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oShadow)) - { - int nDamage = d6() + PRCMin(20, nCasterLvl); - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, DAMAGE_TYPE_SLASHING, nDamage), oTarget); - } - //Select the next target within the spell shape. - oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } -} diff --git a/_haks/poa_exp_spells/sp_ring_bldsa.ncs b/_haks/poa_exp_spells/sp_ring_bldsa.ncs deleted file mode 100644 index 87948b3d..00000000 Binary files a/_haks/poa_exp_spells/sp_ring_bldsa.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_ring_bldsa.nss b/_haks/poa_exp_spells/sp_ring_bldsa.nss deleted file mode 100644 index 6943e671..00000000 --- a/_haks/poa_exp_spells/sp_ring_bldsa.nss +++ /dev/null @@ -1,57 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Ring of Blades OnEnter -//:: FileName sp_ring_bldsa.nss -//::////////////////////////////////////////////// -/**@file Ring of Blades -Conjuration (Creation) -Level: Cleric 3, warmage 3 -Components: V,S, M -Casting Time: 1 standard action -Range: Personal -Target: You -Duration: 1 min./level - -This spell conjures a horizontal ring -of swirling metal blades around you. -The ring extends 5 feet from you, into -all squares adjacent to your space, and -it moves with you as you move. Each -round on your turn, starting when -you cast the spell, the blades deal 1d6 -points of damage +1 point per caster -level (maximum +10) to all creatures -in the affected area. - -The blades conjured by a lawful-aligned -cleric are cold iron, those conjured by -a chaotic-aligned cleric are silver, and -those conjured by a cleric who is neither -lawful nor chaotic are steel. - -Author: Tenjac -Created: 7/6/07 - -Fixed so it finally worked -Strat, Mar 7th, 2019 - -Yeah, it's been totally non-functional for 12 years. -Yay for not testing your shit. -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - object oTarget = GetEnteringObject(); - object oPC = GetAreaOfEffectCreator(); - int nCasterLvl = PRCGetCasterLevel(oPC); - if(nCasterLvl > 20) nCasterLvl = 20; - int nDam = d6(1) + nCasterLvl; - - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oPC) && oTarget != oPC) - { - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, DAMAGE_TYPE_SLASHING, nDam), oTarget); - } -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_scorch_ray.ncs b/_haks/poa_exp_spells/sp_scorch_ray.ncs deleted file mode 100644 index c3902f68..00000000 Binary files a/_haks/poa_exp_spells/sp_scorch_ray.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_scorch_ray.nss b/_haks/poa_exp_spells/sp_scorch_ray.nss deleted file mode 100644 index 77ae5744..00000000 --- a/_haks/poa_exp_spells/sp_scorch_ray.nss +++ /dev/null @@ -1,112 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Scorching Ray -//:: FileName sp_scorch_ray.nss -//::////////////////////////////////////////////// -/**@file Scorching Ray -Evocation [Fire] -Level: Sor/Wiz 2, Duskblade 2 -Components: V, S -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Effect: One or more rays -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -You blast your enemies with fiery rays. You may fire -one ray, plus one additional ray for every four levels -beyond 3rd (to a maximum of three rays at 11th level). -Each ray requires a ranged touch attack to hit and deals -4d6 points of fire damage. - -The rays may be fired at the same or different targets, -but all bolts must be aimed at targets within 30 feet of -each other and fired simultaneously. - -**/ -//:://////////////////////////////////////////////// -//:: Author: Tenjac -//:: Date : 29.9.06 -//:://////////////////////////////////////////////// - - - -/* - - Modify as necessary - Most code should be put in DoSpell() - - PRC_SPELL_EVENT_ATTACK is set when a - touch or ranged attack is used - -*/ -#include "prc_inc_sp_tch" -#include "prc_add_spell_dc" -void main() -{ - if (!X2PreSpellCastCode()) return; - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - object oTarget = PRCGetSpellTargetObject(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nRays = 5; - int nDam; - int iAttackRoll; - - PRCSignalSpellEvent(oTarget, TRUE); - - if(nCasterLevel < 19) - { - nRays =4; - } - if(nCasterLevel < 15) - { - nRays =3; - } - - if(nCasterLevel < 11) - { - nRays =2; - } - - if(nCasterLevel < 7) - { - nRays = 1; - } - - while(nRays > 0) - { - nRays--; - iAttackRoll = PRCDoRangedTouchAttack(oTarget); - - //Beam - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(VFX_BEAM_FIRE, oCaster, BODY_NODE_HAND, !iAttackRoll), oTarget, 1.0f); - - if (iAttackRoll > 0) - { - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - nDam = d6(4+(nPenetr/4)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6*(4+(nPenetr/4)); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDam, ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE)); - } - } - - } - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_seeking_ray.ncs b/_haks/poa_exp_spells/sp_seeking_ray.ncs deleted file mode 100644 index c4572822..00000000 Binary files a/_haks/poa_exp_spells/sp_seeking_ray.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_seeking_ray.nss b/_haks/poa_exp_spells/sp_seeking_ray.nss deleted file mode 100644 index e7818faa..00000000 --- a/_haks/poa_exp_spells/sp_seeking_ray.nss +++ /dev/null @@ -1,123 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Seeking Ray -//:: FileName sp_seeking_ray.nss -//::////////////////////////////////////////////// -/**@file Seeking Ray -Evocation -Level: Duskblade 2, sorcerer/wizard 2 -Components: V,S -Casting Time: 1 standard action -Range: Medium -Effect: Ray -Duration: Instantaneous; see text -Saving Throw: None -Spell Resistance: Yes - -You create a ray that deals 4d6 points of electricity -damage if it strikes your target. While this ray -requires a ranged touch attack to strike an opponent, -it ignores concealment and cover (but not total -concealment or total cover), and it does not take the -standard penalty for firing into melee. - -In addition to the damage it deals, the ray creates a -link of energy between you and the subject. If this -ray struck the target and dealt damage, you gain a +4 -bonus on attacks you make with ray spells (including -another casting of this one, if desired) against the -subject for 1 round per caster level. If you cast -seeking ray a second time on a creature that is still -linked to you from a previous casting, the duration -of the new link overlaps (does not stack with) the -remaining duration of the previous one. - -**/ -////////////////////////////////////////////////////// -// Author: Tenjac -// Date: 26.9.06 -////////////////////////////////////////////////////// - -#include "prc_inc_sp_tch" -#include "prc_sp_func" -#include "prc_add_spell_dc" -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - float fDur = RoundsToSeconds(nCasterLevel); - - //INSERT SPELL CODE HERE - int iAttackRoll = 0; //placeholder - - iAttackRoll = PRCDoRangedTouchAttack(oTarget); - - //Beam VFX. Ornedan is my hero. - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(VFX_BEAM_LIGHTNING, oCaster, BODY_NODE_HAND, !iAttackRoll), oTarget, 1.0f); - - if (iAttackRoll > 0) - { - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLevel + SPGetPenetr())) - { - //Touch attack code goes here - int nDam = d6(4+(nPenetr/4)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6*(4+(nPenetr/4)); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ELECTRICAL), oTarget); - - //Apply VFX for duration to enable "seeking" - add code to prc_inc_sp_touch! - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE), oTarget, fDur); - } - } - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} - - \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_seeth_eyebn.ncs b/_haks/poa_exp_spells/sp_seeth_eyebn.ncs deleted file mode 100644 index 5f6f5fd5..00000000 Binary files a/_haks/poa_exp_spells/sp_seeth_eyebn.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_seeth_eyebn.nss b/_haks/poa_exp_spells/sp_seeth_eyebn.nss deleted file mode 100644 index 8168a5d8..00000000 --- a/_haks/poa_exp_spells/sp_seeth_eyebn.nss +++ /dev/null @@ -1,96 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name: Seething Eyebane -//:: Filename: sp_seeth_eyebn.nss -//:://///////////////////////////////////////////// -/**Seething Eyebane -Transmutation [Evil, Acid] -Level: Corrupt 1 -Components: V, S, Corrupt -Casting Time: 1 action -Range: Touch -Target: Creature touched -Duration: Instantaneous -Saving Throw: Fortitude negates (see text) -Spell Resistance: Yes - -The subject's eyes burst, spraying acid upon everyone -within 5 feet. The subject is blinded and takes 1d6 -points of acid damage. Those sprayed take 1d6 points -of acid damage (Reflex save for half). Creatures -without eyes can't be blinded, but they might take -acid damage if someone nearby is the subject of -seething eyebane. - -Corruption Cost: 1d6 points of Constitution damage - -@author Written By: Tenjac -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - //define vars - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - location lTarget = GetLocation(oTarget); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDC = PRCGetSaveDC(oTarget, oPC); - int nType = MyPRCGetRacialType(oTarget); - - PRCSignalSpellEvent(oTarget, TRUE, SPELL_SEETHING_EYEBANE, oPC); - - if(nType != RACIAL_TYPE_CONSTRUCT && - nType != RACIAL_TYPE_OOZE && - nType != RACIAL_TYPE_ELEMENTAL && - nType != RACIAL_TYPE_UNDEAD) - { - //Spell Resistance - if (!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) - { - //Fort save - if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_ACID)) - { - - //Blind target permanently - effect eBlind = EffectBlindness(); - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBlind, oTarget); - - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 5.0, lTarget, FALSE, OBJECT_TYPE_CREATURE); - - while(GetIsObjectValid(oTarget)) - { - //nDam = 1d6 acid - int nDam = d6(1)+(nCasterLvl/4); - - // Acid Sheath adds +1 damage per die to acid descriptor spells - if (GetHasDescriptor(GetSpellId(), DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, oPC)) - nDam += 1; - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ACID); - - //apply damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 5.0, lTarget, FALSE, OBJECT_TYPE_CREATURE); - } - - } - } - } - //Corruption cost 1d6 CON regardless of success - int nCost = d6(1); - - DoCorruptionCost(oPC, ABILITY_CONSTITUTION, nCost, 0); - - //Corrupt spells get mandatory 10 pt evil adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_EVIL, 10, FALSE); - - //SPEvilShift(oPC); - PRCSetSchool(); - -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_serp_sigh.ncs b/_haks/poa_exp_spells/sp_serp_sigh.ncs deleted file mode 100644 index 71f8793b..00000000 Binary files a/_haks/poa_exp_spells/sp_serp_sigh.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_serp_sigh.nss b/_haks/poa_exp_spells/sp_serp_sigh.nss deleted file mode 100644 index 7bbe7635..00000000 --- a/_haks/poa_exp_spells/sp_serp_sigh.nss +++ /dev/null @@ -1,59 +0,0 @@ -#include "prc_inc_spells" -#include "spinc_bolt" -#include "spinc_cone" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - // Get the number of damage dice. - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - int nDice = nCasterLevel > 20 ? 20 : nCasterLevel; - int nSpell = GetSpellId(); - int nVfx; - - if(nSpell == SPELL_SERPENTS_SIGH_BOLT_ACID) - { - DoBolt(nCasterLevel, 6, 0, nDice, 447 /* VFX_BEAM_DISINTEGRATE */, VFX_IMP_ACID_S, - DAMAGE_TYPE_ACID, SAVING_THROW_TYPE_ACID, - SPELL_SCHOOL_EVOCATION, FALSE, SPELL_SERPENTS_SIGH); - nVfx = VFX_IMP_ACID_S; - } - else if(nSpell == SPELL_SERPENTS_SIGH_BOLT_LIGHTNING) - { - DoBolt(nCasterLevel, 6, 0, nDice, VFX_BEAM_LIGHTNING, VFX_IMP_LIGHTNING_S, - DAMAGE_TYPE_ELECTRICAL, SAVING_THROW_TYPE_ELECTRICITY, - SPELL_SCHOOL_EVOCATION, FALSE, SPELL_SERPENTS_SIGH); - nVfx = VFX_IMP_LIGHTNING_S; - } - else if(nSpell == SPELL_SERPENTS_SIGH_CONE_ACID) - { - DoCone(6, 0, 10, -1, VFX_IMP_ACID_S, - DAMAGE_TYPE_ACID, SAVING_THROW_TYPE_ACID, - SPELL_SCHOOL_EVOCATION, SPELL_SERPENTS_SIGH); - nVfx = VFX_IMP_ACID_S; - } - else if(nSpell == SPELL_SERPENTS_SIGH_CONE_COLD) - { - DoCone(6, 0, 10, -1, VFX_IMP_FROST_S, - DAMAGE_TYPE_COLD, SAVING_THROW_TYPE_COLD, - SPELL_SCHOOL_EVOCATION, SPELL_SERPENTS_SIGH); - nVfx = VFX_IMP_FROST_S; - } - else if(nSpell == SPELL_SERPENTS_SIGH_CONE_FIRE) - { - DoCone(6, 0, 10, -1, VFX_IMP_FLAME_S, - DAMAGE_TYPE_FIRE, SAVING_THROW_TYPE_FIRE, - SPELL_SCHOOL_EVOCATION, SPELL_SERPENTS_SIGH); - nVfx = VFX_IMP_FLAME_S; - } - - //The caster takes 1 hit point of damage per hit die of damage dealt. - ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(OBJECT_SELF, nDice, DAMAGE_TYPE_MAGICAL), OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nVfx), OBJECT_SELF); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_shock_grasp.ncs b/_haks/poa_exp_spells/sp_shock_grasp.ncs deleted file mode 100644 index 09501da9..00000000 Binary files a/_haks/poa_exp_spells/sp_shock_grasp.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_shock_grasp.nss b/_haks/poa_exp_spells/sp_shock_grasp.nss deleted file mode 100644 index 3be497d6..00000000 --- a/_haks/poa_exp_spells/sp_shock_grasp.nss +++ /dev/null @@ -1,115 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Shocking Grasp -//:: FileName sp_shock_grasp.nss -//::////////////////////////////////////////////// -/**@file Shocking Grasp -Evocation [Electricity] -Level: Sor/Wiz 1, Duskblade 1 -Components: V, S -Casting Time: 1 standard action -Range: Touch -Target: Creature or object touched -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -Your successful melee touch attack deals 1d6 points -of electricity damage per caster level (maximum 5d6). -When delivering the jolt, you gain a +3 bonus on -attack rolls if the opponent is wearing metal armor -(or made out of metal, carrying a lot of metal, -or the like). - -**/ -//:://////////////////////////////////////////////// -//:: Author: Tenjac -//:: Date : 29.9.06 -//:://////////////////////////////////////////////// - - -/*3055 - -Modify as necessary -Most code should be put in DoSpell() - -PRC_SPELL_EVENT_ATTACK is set when a -touch or ranged attack is used - -*/ - -#include "prc_inc_sp_tch" -#include "prc_sp_func" -#include "prc_add_spell_dc" -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nDie = PRCMin(nCasterLevel, 20); - object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget); - effect eVis = EffectVisualEffect(VFX_DUR_BIGBYS_BIGBLUE_HAND2); - - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SHOCKING_GRASP)); - - int nAttackBonus = GetBaseAC(oArmor) >= 4 ? 3 : 0; - int iAttackRoll = PRCDoMeleeTouchAttack(oTarget, TRUE, oCaster, nAttackBonus); - - if(iAttackRoll > 0) - { - // Only creatures, and PvP check. - if(!GetIsReactionTypeFriendly(oTarget)) - { - // Check Spell Resistance - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - int nDam = d6(nDie); - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDam = 6 * nDie; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDam += (nDam/2); - - int eDamageType = ChangedElementalDamage(oCaster, DAMAGE_TYPE_ELECTRICAL); - ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDam, eDamageType); - PRCBonusDamage(oTarget); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } - - return iAttackRoll;// return TRUE if spell charges should be decremented -} - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - if (!X2PreSpellCastCode()) return; - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { - //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_shout.ncs b/_haks/poa_exp_spells/sp_shout.ncs deleted file mode 100644 index 6d63d013..00000000 Binary files a/_haks/poa_exp_spells/sp_shout.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_shout.nss b/_haks/poa_exp_spells/sp_shout.nss deleted file mode 100644 index 5b727ba5..00000000 --- a/_haks/poa_exp_spells/sp_shout.nss +++ /dev/null @@ -1,130 +0,0 @@ -/* - sp_shout.nss - - Shout - Evocation [Sonic] - Level: Brd 4, Sor/Wiz 4 - Components: V - Casting Time: 1 standard action - Range: 30 ft. - Area: Cone-shaped burst - Duration: Instantaneous - Saving Throw: Fortitude partial or Reflex negates (object); see text - Spell Resistance: Yes (object) - You emit an ear-splitting yell that deafens and damages creatures in its - path. Any creature within the area is deafened for 2d6 rounds and takes - 5d6 points of sonic damage. A successful save negates the deafness and - reduces the damage by half. Any exposed brittle or crystalline object or - crystalline creature takes 1d6 points of sonic damage per caster level - (maximum 15d6). An affected creature is allowed a Fortitude save to reduce - the damage by half, and a creature holding fragile objects can negate damage - to them with a successful Reflex save. - A shout spell cannot penetrate a silence spell. - - Shout, Greater - Evocation [Sonic] - Level: Brd 6, Sor/Wiz 8 - Components: V, S, F - Range: 60 ft. - Saving Throw: Fortitude partial or Reflex negates (object); see text - This spell functions like shout, except that the cone deals 10d6 points of sonic - damage (or 1d6 points of sonic damage per caster level, maximum 20d6, against - exposed brittle or crystalline objects or crystalline creatures). It also causes - creatures to be stunned for 1 round and deafened for 4d6 rounds. A creature in - the area of the cone can negate the stunning and halve both the damage and the - duration of the deafness with a successful Fortitude save. A creature holding - vulnerable objects can attempt a Reflex save to negate the damage to those objects. - Arcane Focus: A small metal or ivory horn. - - By: Flaming_Sword - Created: Sept 9, 2006 - Modified: Sept 9, 2006 - - Label Name IconResRef School Range VS MetaMagic TargetType ImpactScript Bard Cleric Druid Paladin Ranger Wiz_Sorc Innate ConjTime ConjAnim ConjHeadVisual ConjHandVisual ConjGrndVisual ConjSoundVFX ConjSoundMale ConjSoundFemale CastAnim CastTime CastHeadVisual CastHandVisual CastGrndVisual CastSound Proj ProjModel ProjType ProjSpwnPoint ProjSound ProjOrientation ImmunityType ItemImmunity SubRadSpell1 SubRadSpell2 SubRadSpell3 SubRadSpell4 SubRadSpell5 Category Master UserType SpellDesc UseConcentration SpontaneouslyCast AltMessage HostileSetting FeatID Counter1 Counter2 HasProjectile -25 Cone_of_Cold 775 is_ConeCold V S vs 0x3d 0x3E NW_S0_ConeCold **** **** **** **** **** 5 5 1500 hand vco_swar3blue **** **** sco_swar3blue vs_chant_evoc_hm vs_chant_evoc_hf out 1700 **** var_conecold **** sar_conecold 0 **** **** **** **** path Cold 0 **** **** **** **** **** 11 **** 1 6121 1 0 **** 1 **** **** **** 1 -167 Sound_Burst 917 is_SndBurst V L vs 0x3c 0x2E NW_S0_SndBurst 2 2 **** **** **** **** 2 1500 hand **** vco_mehansonc01 **** sco_mehansonc01 vs_chant_evoc_lm vs_chant_evoc_lf out 1000 **** **** **** **** 1 vpr_los accelerating hand spr_los path Sonic 1 **** **** **** **** **** 11 **** 1 6260 1 0 **** 1 **** **** **** 1 -135 Prismatic_Spray 885 is_PrisSpray V S vs 0x38 0x2E NW_S0_PrisSpray **** **** **** **** **** 7 7 1500 hand **** vco_mehanmind03 **** sco_mehanmind03 vs_chant_evoc_hm vs_chant_evoc_hf out 1700 **** var_conepris **** sar_conepris 0 **** homing hand **** path **** 1 **** **** **** **** **** 11 **** 1 6229 1 0 **** 1 **** **** **** 1 -307 BARBARIAN_RAGE 1062 ife_rage V P s 0x00 0x09 NW_S1_BarbRage **** **** **** **** **** **** 1 500 head **** **** **** **** **** **** out 500 **** **** **** **** 0 **** **** **** **** **** **** 1 **** **** **** **** **** 16 **** 3 **** 0 0 53207 0 293 **** **** 0 - -1953 Shout 16828892 is_SndBurst V S v 0x1d 0x3E sp_shout 4 **** **** **** **** 4 4 1500 hand **** vco_smhansonc01 **** sco_mehansonc01 vs_chant_evoc_lm vs_chant_evoc_lf out 1700 **** vca_conesonc01 **** sff_howlmind 0 **** **** **** **** path Sonic 1 **** **** **** **** **** 11 **** 1 16828893 1 0 **** 1 **** **** **** 1 -1954 Greater_Shout 16828894 is_SndBurst V M vs 0x3d 0x3E sp_shout 6 **** **** **** **** 8 6 1500 hand **** vco_mehansonc01 **** sco_mehansonc01 vs_chant_evoc_hm vs_chant_evoc_hf out 1700 **** vca_conesonc01 **** sff_howlmind 0 **** **** **** **** path Sonic 1 **** **** **** **** **** 11 **** 1 16828895 1 0 **** 1 **** **** **** 1 - -*/ - -#include "prc_sp_func" -#include "prc_add_spell_dc" -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nSpellID = PRCGetSpellId(); - PRCSetSchool(GetSpellSchool(nSpellID)); - if (!X2PreSpellCastCode()) return; - location lTargetLocation = PRCGetSpellTargetLocation(); - object oTarget; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - float fDelay; - float fSize = FeetToMeters((nSpellID == SPELL_SHOUT_GREATER) ? 60.0 : 30.0); - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_SONIC); - - int nDC; - - int nDamageDice = (nSpellID == SPELL_SHOUT_GREATER) ? 10+(nPenetr/2) : 5+(nPenetr/4); - int nDeafenedDice = (nSpellID == SPELL_SHOUT_GREATER) ? 4 : 2; - int nDamage; - int nDuration; - - oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, fSize, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - { - SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID)); - fDelay = GetDistanceBetween(oCaster, oTarget)/20.0; - if(!PRCDoResistSpell(oCaster, oTarget, nCasterLevel, fDelay) && (oTarget != oCaster)) - { - nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - nDamage = d6(nDamageDice); - nDuration = d6(nDeafenedDice); - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6 * nDamageDice; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage += (nDamage/2); - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, - PRCGetSaveDC(oTarget, oCaster, nSpellID), - SAVING_THROW_TYPE_SONIC)) - { - nDamage /= 2; - if(GetHasMettle(oTarget, SAVING_THROW_FORT)) - nDamage = 0; - else if(nSpellID == SPELL_SHOUT_GREATER) - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDeaf(), oTarget, RoundsToSeconds(nDuration/2))); - } - else - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDeaf(), oTarget, RoundsToSeconds(nDuration))); - if(nSpellID == SPELL_SHOUT_GREATER) - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, 6.0)); - } - if(nDamage > 0) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SONIC), oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, EleDmg), oTarget)); - PRCBonusDamage(oTarget); - } - } - } - } - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, fSize, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_shriveling.ncs b/_haks/poa_exp_spells/sp_shriveling.ncs deleted file mode 100644 index fab1f15f..00000000 Binary files a/_haks/poa_exp_spells/sp_shriveling.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_shriveling.nss b/_haks/poa_exp_spells/sp_shriveling.nss deleted file mode 100644 index d7dfb913..00000000 --- a/_haks/poa_exp_spells/sp_shriveling.nss +++ /dev/null @@ -1,107 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Shriveling -//:: FileName sp_shriveling.nss -//::////////////////////////////////////////////// -/**@file Shriveling -Necromancy [Evil] -Level: Clr 3, Sor/Wiz 2 -Components: V, S, Disease -Casting Time: 1 action -Range: Close (25 ft. + 5 ft./2 levels) -Target: One living creature -Duration: Instantaneous -Saving Throw: Reflex half -Spell Resistance: Yes - -The caster channels dark energy that blasts and -blackens the subject's flesh. The subject takes -1d4 points of damage per caster level (maximum 10d4). - -Disease Component: Soul rot. - -Author: Tenjac -Created: 05/04/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -int GetHasSoulRot(object oPC); - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDC = PRCGetSaveDC(oTarget, oPC); - - //spellhook - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - PRCSignalSpellEvent(oTarget,TRUE, SPELL_SHRIVELING, oPC); - - //Check for Soul rot - if(!GetHasSoulRot(oPC)) - { - SendMessageToPC(oPC, "This spell requires the caster to have the Soul Rot disease."); - PRCSetSchool(); - return; - } - - //SR - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()) && PRCGetIsAliveCreature(oTarget)) - { - int nDam = d4(PRCMin(nCasterLvl, 20)); - - //eval metamagic - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 4 * (PRCMin(nCasterLvl, 20)); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - //Check for save - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) - { - nDam = nDam/2; - } - - effect eVis = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_GREASE); - - //Apply damage & visual - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - //SPEvilShift(oPC); - PRCSetSchool(); -} - - -int GetHasSoulRot(object oPC) -{ - int bHasDisease = FALSE; - effect eTest = GetFirstEffect(oPC); - effect eDisease = EffectDisease(DISEASE_SOUL_ROT); - - if (PRCGetHasEffect(EFFECT_TYPE_DISEASE, oPC)) - { - while (GetIsEffectValid(eTest)) - { - if(eTest == eDisease) - { - bHasDisease = TRUE; - - } - eTest = GetNextEffect(oPC); - } - } - return bHasDisease; -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_slash_displ.ncs b/_haks/poa_exp_spells/sp_slash_displ.ncs deleted file mode 100644 index 1afca60c..00000000 Binary files a/_haks/poa_exp_spells/sp_slash_displ.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_slash_displ.nss b/_haks/poa_exp_spells/sp_slash_displ.nss deleted file mode 100644 index fa0de196..00000000 --- a/_haks/poa_exp_spells/sp_slash_displ.nss +++ /dev/null @@ -1,89 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Slashing Dispell -//:: FileName sp_slash_displ.nss -//::////////////////////////////////////////////// -/**@file Slashing Dispell -Abjuration/Evocation -Level: Duskblade 5, sorcerer/wizard 4 -Components: V,S -Casting Time: 1 standard action -Range: Medium -Target or Area: One creature or 20ft radius burst -Duration: Instantaneous -Saving Throw: None -Spell Resistance: No - -This spell functions like dispel magic, except as -noted here. Any creature that has a spell effect -removed from it takes 2 points of damage per level -of the dispelled effect. If a creature loses the -effects of multiple spells, it takes damage for -each one. -**/ - -#include "inc_dispel" -#include "prc_add_spell_dc" - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - - if (!X2PreSpellCastCode()) return; - - object oPC = OBJECT_SELF; - effect eVis = EffectVisualEffect(VFX_IMP_BREACH); - effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL); - object oTarget = PRCGetSpellTargetObject(); - location lLocal = PRCGetSpellTargetLocation(); - int nCasterLevel = PRCGetCasterLevel(oPC); - - //-------------------------------------------------------------------------- - // Dispel Magic is capped at caster level 10 - //-------------------------------------------------------------------------- - if(nCasterLevel > 40) - { - nCasterLevel = 40; - } - - if (GetIsObjectValid(oTarget)) - { - //---------------------------------------------------------------------- - // Targeted Dispel - Dispel all - //---------------------------------------------------------------------- - spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact); - - } - else - { - //---------------------------------------------------------------------- - // Area of Effect - Only dispel best effect - //---------------------------------------------------------------------- - - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation()); - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE ); - while (GetIsObjectValid(oTarget)) - { - if(GetObjectType(oTarget) == OBJECT_TYPE_AREA_OF_EFFECT) - { - //-------------------------------------------------------------- - // Handle Area of Effects - spellsDispelAoEMod(oTarget, oPC,nCasterLevel); - } - else if (GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE) - { - SignalEvent(oTarget, EventSpellCastAt(oPC, GetSpellId())); - } - else - { - spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact, FALSE); - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE,lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE); - } - } - - PRCSetSchool(); -} - - - - diff --git a/_haks/poa_exp_spells/sp_slashdark.ncs b/_haks/poa_exp_spells/sp_slashdark.ncs deleted file mode 100644 index 24518b18..00000000 Binary files a/_haks/poa_exp_spells/sp_slashdark.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_slashdark.nss b/_haks/poa_exp_spells/sp_slashdark.nss deleted file mode 100644 index f4d061d9..00000000 --- a/_haks/poa_exp_spells/sp_slashdark.nss +++ /dev/null @@ -1,90 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// -// Slashing Darkness - Project a damaging ray of negative energy. -// -///////////////////////////////////////////////////////////////////// -//::Added hold ray functionality - HackyKid - - -#include "prc_inc_sp_tch" -#include "prc_sp_func" -#include "prc_add_spell_dc" -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - - int nDice = (nCasterLevel + 1) / 2; - if (nDice > 20) nDice = 20; - - // Adjust the damage type if necessary. - int nDamageType = PRCGetElementalDamageType(DAMAGE_TYPE_NEGATIVE, OBJECT_SELF); - - int iAttackRoll = 0; - - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget); - - iAttackRoll = PRCDoRangedTouchAttack(oTarget);; - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, - EffectBeam(VFX_BEAM_BLACK, OBJECT_SELF, BODY_NODE_HAND, 0 == iAttackRoll), oTarget, 1.0,FALSE); - - if (iAttackRoll > 0) - { - if (!PRCDoResistSpell(OBJECT_SELF, oTarget, nPenetr)) - { - int nDamage = PRCGetMetaMagicDamage(nDamageType, 1 == iAttackRoll ? nDice : (nDice * 2), 8); - - // Apply the damage and the vfx to the target. - - effect eEffect = PRCEffectDamage(oTarget, nDamage, nDamageType); - if (RACIAL_TYPE_UNDEAD == MyPRCGetRacialType(oTarget) || (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD) || GetLocalInt(oTarget, "AcererakHealing")) - eEffect = PRCEffectHeal(nDamage, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY), oTarget); - } - } - } - - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (GetLocalInt(oCaster, PRC_SPELL_HOLD) && GetHasFeat(FEAT_EF_HOLD_RAY, oCaster) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - if (oCaster != oTarget) //cant target self with this spell, only when holding charge - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_snsnow.ncs b/_haks/poa_exp_spells/sp_snsnow.ncs deleted file mode 100644 index 609f7a87..00000000 Binary files a/_haks/poa_exp_spells/sp_snsnow.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_snsnow.nss b/_haks/poa_exp_spells/sp_snsnow.nss deleted file mode 100644 index 90326540..00000000 --- a/_haks/poa_exp_spells/sp_snsnow.nss +++ /dev/null @@ -1,47 +0,0 @@ -#include "prc_inc_sp_tch" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oTarget = PRCGetSpellTargetObject(); - - // Determine damage dice. - int nCasterLvl = PRCGetCasterLevel(); - int nDice = nCasterLvl; - if (nDice > 20) nDice = 20; - int nPenetr = nCasterLvl + SPGetPenetr(); - - // Adjust the damage type of necessary. - int nDamageType = PRCGetElementalDamageType(DAMAGE_TYPE_COLD, OBJECT_SELF); - - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - // Fire cast spell at event for the specified target - PRCSignalSpellEvent(oTarget); - - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr)) - { - // Make touch attack, saving result for possible critical - int nTouchAttack = PRCDoRangedTouchAttack(oTarget);; - if (nTouchAttack > 0) - { - // Roll the damage of (1d6+1) / level, doing double damage on a crit. - int nDamage = PRCGetMetaMagicDamage(nDamageType, - 1 == nTouchAttack ? nDice : (nDice * 2), 6, 1); - - // Apply the damage and the damage visible effect to the target. - SPApplyEffectToObject(DURATION_TYPE_INSTANT, - PRCEffectDamage(oTarget, nDamage, nDamageType), oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, - EffectVisualEffect(VFX_IMP_FROST_S), oTarget); - } - } - } - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_snsnowsw.ncs b/_haks/poa_exp_spells/sp_snsnowsw.ncs deleted file mode 100644 index 2bdc66ac..00000000 Binary files a/_haks/poa_exp_spells/sp_snsnowsw.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_snsnowsw.nss b/_haks/poa_exp_spells/sp_snsnowsw.nss deleted file mode 100644 index 239b58ab..00000000 --- a/_haks/poa_exp_spells/sp_snsnowsw.nss +++ /dev/null @@ -1,19 +0,0 @@ -#include "prc_inc_spells" -#include "spinc_burst" - -void main() -{ - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - if (!X2PreSpellCastCode()) return; - - // Get the damage dice. - int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nDice = (nCasterLvl + 1) / 2; - if (nDice > 20) nDice = 20; - - // Ice burst is a colossal radius burst doing 1d4+10/level (cap at 10) cold damage. - DoBurst (nCasterLvl,6, 0, nDice, - VFX_IMP_FROST_L, VFX_IMP_FROST_S, - RADIUS_SIZE_MEDIUM, DAMAGE_TYPE_COLD, DAMAGE_TYPE_COLD, SAVING_THROW_TYPE_COLD); -} diff --git a/_haks/poa_exp_spells/sp_spiderskin.ncs b/_haks/poa_exp_spells/sp_spiderskin.ncs deleted file mode 100644 index 607cdf28..00000000 Binary files a/_haks/poa_exp_spells/sp_spiderskin.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_spiderskin.nss b/_haks/poa_exp_spells/sp_spiderskin.nss deleted file mode 100644 index e436739a..00000000 --- a/_haks/poa_exp_spells/sp_spiderskin.nss +++ /dev/null @@ -1,71 +0,0 @@ -/* - sp_spiderskin - - Spiderskin toughens the target's skin, making - it more like a spider's carapace. The target - gains a bonus to natural armor, saves vs. poison, - and hide checks. The bonus is equal to 1 +1 per 3 - caster levels, to a maximum of +5 at 12th level. - - By: ??? - Created: ??? - Modified: Jul 2, 2006 -*/ - -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - PRCSignalSpellEvent(oTarget, FALSE); - // Determine the spell's duration, taking metamagic feats into account. - float fDuration = PRCGetMetaMagicDuration(TenMinutesToSeconds(nCasterLevel)); - // Calculate buff amount. - int nBuff = 1 + nCasterLevel / 3; - if (nBuff > 8) nBuff = 8; - // Apply the buff and vfx. - effect eBuff = EffectACIncrease(nBuff, AC_NATURAL_BONUS); - eBuff = EffectLinkEffects(eBuff, EffectSkillIncrease(SKILL_HIDE, nBuff)); - eBuff = EffectLinkEffects(eBuff, - EffectSavingThrowIncrease(SAVING_THROW_ALL, nBuff, SAVING_THROW_TYPE_POISON)); - eBuff = EffectLinkEffects(eBuff, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBuff, oTarget, fDuration,TRUE,-1,nCasterLevel); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, - EffectVisualEffect(VFX_IMP_POLYMORPH), oTarget); - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_stalagmite.ncs b/_haks/poa_exp_spells/sp_stalagmite.ncs deleted file mode 100644 index ed6ebd89..00000000 Binary files a/_haks/poa_exp_spells/sp_stalagmite.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_stalagmite.nss b/_haks/poa_exp_spells/sp_stalagmite.nss deleted file mode 100644 index c846bd4f..00000000 --- a/_haks/poa_exp_spells/sp_stalagmite.nss +++ /dev/null @@ -1,84 +0,0 @@ -/* -Sudden Stalagmite - -Conjuration (Creation) [Earth] -Level: Druid 4, -Components: V, S, -Casting Time: 1 standard action -Range: Medium (100 ft. + 10 ft./level) -Target: One creature -Duration: Instantaneous -Saving Throw: Reflex half -Spell Resistance: No - -You point your finger upward and utter a curt shout. Immediately, a razor-sharp stalagmite bursts from the ground to impale your foe. - -This spell creates a stalagmite about 1 foot wide at its base and up to 10 feet tall. The stalagmite grows from the ground under the target creature and shoots upward. - -The stalagmite deals 1d6 points of piercing damage per caster level (maximum 10d6). In addition, a target that fails to make a saving throw against this spell and takes damage from it is impaled on the stalagmite and -cannot move from its current location. The victim can break free with a DC 25 Strength check, although doing this deals it 3d6 points of slashing damage. - -A creature's damage reduction, if any, applies to the damage from this spell. The damage from sudden stalagmite is treated as piercing for the purpose of overcoming damage reduction. -*/ - -#include "prc_sp_func" -#include "prc_add_spell_dc" - -void StalagmiteBreak(object oTarget, object oCaster, effect eHold) -{ - int nStrChk = d20() + GetAbilityModifier(ABILITY_STRENGTH, oTarget); - if(nStrChk >= 25) - { - PRCRemoveSpellEffects(SPELL_SUDDEN_STALAGMITE, oCaster, oTarget); - FloatingTextStringOnCreature("*Strength check successful!*", oTarget, FALSE); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, d6(3), DAMAGE_TYPE_PIERCING), oTarget); - } - else - { - DelayCommand(6.0, StalagmiteBreak(oTarget, oCaster, eHold)); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(eHold), oTarget, 6.0); - } -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nSaveDC = PRCGetSaveDC(oTarget, oCaster); - int nDice = nCasterLevel; - // 10d6 Max - if (nDice > 40) nDice = 40; - int nDam = d6(nDice); - effect eDam; - effect eVis = EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL); - effect eHold = EffectLinkEffects(EffectParalyze(), EffectVisualEffect(VFX_DUR_STONEHOLD)); - - int iAttackRoll = 0; - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Resolve metamagic - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - nDam = 6 * nDice; - else - //Roll damage for each target - nDam = d6(nDice); - if ((nMetaMagic & METAMAGIC_EMPOWER)) - nDam += nDam / 2; - int nCheck = nDam; - nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nSaveDC, SAVING_THROW_TYPE_SPELL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_PIERCING), oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - CreateObject(OBJECT_TYPE_PLACEABLE, "x3_plc_boulder1", PRCGetSpellTargetLocation()); - if (nDam == nCheck) // If the damage is the same after the reflex save, they failed it. - { - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(eHold), oTarget, 6.0); //Extraordinary because it's just a piece of stone, not magical, at this point - DelayCommand(6.0, StalagmiteBreak(oTarget, oCaster, eHold)); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/sp_strm_shard.ncs b/_haks/poa_exp_spells/sp_strm_shard.ncs deleted file mode 100644 index 926d5906..00000000 Binary files a/_haks/poa_exp_spells/sp_strm_shard.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_strm_shard.nss b/_haks/poa_exp_spells/sp_strm_shard.nss deleted file mode 100644 index ea767c39..00000000 --- a/_haks/poa_exp_spells/sp_strm_shard.nss +++ /dev/null @@ -1,97 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Storm of Shards -//:: FileName sp_strm_shard.nss -//::////////////////////////////////////////////// -/**@file Storm of Shards -Evocation [Good] -Level: Sanctified 6 -Components: V, S, Sacrifice -Casting Time: 1 standard action -Range: 0 ft. -Area: 80-ft.-radius spread -Duration: Instantaneous -Saving Throw: Fortitude negates (blinding), -Reflex half (shards) -Spell Resistance: Yes - -Shards of heavenly light rain down from above. -Evil creatures within the spell's area that fail -a Fortitude save are blinded permanently. The -light shards also slice the flesh of evil -creatures, dealing 1d6 points of damage per caster -level (maximum 20d6). A successful Reflex save -halves the damage, which is of divine origin. - -Sacrifice: 1d3 points of Strength drain. - -Author: Tenjac -Created: 6/28/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - location lLoc = GetLocation(oPC); - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 24.38f, lLoc, FALSE, OBJECT_TYPE_CREATURE); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nDC = PRCGetSaveDC(oTarget, oPC); - int nAlign; - int nMetaMagic = PRCGetMetaMagicFeat(); - - //VFX - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIRESTORM), lLoc); - - while(GetIsObjectValid(oTarget)) - { - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl + SPGetPenetr())) - { - nAlign = GetAlignmentGoodEvil(oTarget); - - if(nAlign == ALIGNMENT_EVIL) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DIVINE)) - { - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectBlindness(), oTarget); - } - - int nDam = d6(PRCMin(nCasterLvl, 40)); - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 *(PRCMin(nCasterLvl, 40)); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_DIVINE)) - { - nDam = nDam/2; - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_DIVINE), oTarget); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 24.38f, lLoc, FALSE, OBJECT_TYPE_CREATURE); - } - - //Sanctified spells get mandatory 10 pt good adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE); - - //SPGoodShift(oPC); - DoCorruptionCost(oPC, ABILITY_STRENGTH, d3(1), 1); - PRCSetSchool(); -} - - - \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_sunmantle.ncs b/_haks/poa_exp_spells/sp_sunmantle.ncs deleted file mode 100644 index da8eea77..00000000 Binary files a/_haks/poa_exp_spells/sp_sunmantle.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_sunmantle.nss b/_haks/poa_exp_spells/sp_sunmantle.nss deleted file mode 100644 index 8d0d5761..00000000 --- a/_haks/poa_exp_spells/sp_sunmantle.nss +++ /dev/null @@ -1,78 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Sunmantle -//:: FileName sp_sunmantle.nss -//::////////////////////////////////////////////// -/**@file Sunmantle -Abjuration -Level: Sanctified 4 -Components: S, Sacrifice -Casting Time: 1 standard action -Range: Touch -Target: One creature touched -Duration: 1 round/level -Saving Throw: None -Spell Resistance: Yes - -This spell cloaks the target in a wavering cloak of -light that illuminates an area around the target -(and dispels darkness) as a daylight spell. However, -its ability to generate bright light is not the -spell's primary function. - -The sunmantle grants the target damage reduction -5/-. Furthermore, if the target is struck by a melee -attack that deals hit point damage, a tendril of -light lashes out at the attacker, striking -unerringly and dealing 5 points of damage. - -Because of the brilliance of the sunmantle, -creatures sensitive to bright light (such as dark -elves) take the usual attack penalties when in the -light radius of the sunmantle. - -Sacrifice: 1d4 points of Strength damage. - -Author: Tenjac -Created: 6/20/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - float fDur = RoundsToSeconds(nCasterLvl); - int nMetaMagic = PRCGetMetaMagicFeat(); - - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur += fDur; - } - - //Darkness dispelling - - //DR - effect eLink = EffectLinkEffects(EffectDamageShield(4+(nCasterLvl/4), DAMAGE_BONUS_1, DAMAGE_TYPE_MAGICAL), EffectDamageResistance(DAMAGE_TYPE_BLUDGEONING, 5+(nCasterLvl/4), 0)); - eLink = EffectLinkEffects(EffectDamageResistance(DAMAGE_TYPE_PIERCING, 5+(nCasterLvl/4), 0), eLink); - eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_SLASHING, 5+(nCasterLvl/4), 0)); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDur); - - DoCorruptionCost(oPC, ABILITY_STRENGTH, d4(1), 0); - - //Sanctified spells get mandatory 10 pt good adjustment, regardless of switch - AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE); - - //SPGoodShift(oPC); - PRCSetSchool(); -} - - diff --git a/_haks/poa_exp_spells/sp_thous_ndls.ncs b/_haks/poa_exp_spells/sp_thous_ndls.ncs deleted file mode 100644 index ab0e536d..00000000 Binary files a/_haks/poa_exp_spells/sp_thous_ndls.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_thous_ndls.nss b/_haks/poa_exp_spells/sp_thous_ndls.nss deleted file mode 100644 index 52dab0e4..00000000 --- a/_haks/poa_exp_spells/sp_thous_ndls.nss +++ /dev/null @@ -1,108 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Thousand Needles -//:: FileName sp_thous_ndls.nss -//::////////////////////////////////////////////// -/**@file Thousand Needles -Conjuration (Creation) [Evil] -Level: Pain 5, Clr 6 -Components: V, S, M -Casting Time: 1 action -Range: Medium (100 ft. + 10 ft./levels) -Target: One living creature -Duration: 1 minute/level -Saving Throw: Fortitude partial -Spell Resistance: Yes - -A thousand needles surround the subject and pierce -his flesh, worming through armor or any type of -protection, although creatures with damage reduction -are immune to this spell. The subject takes 2d6 -points of damage immediately and takes a -4 -circumstance penalty on attack rolls, saving throws, -skill checks, and ability checks for the rest of the -spell's duration. A successful Fortitude save reduces -damage to half and negates the circumstance penalty. - -Material Component: A handful of needles all of -which have drawn blood. - -Author: Tenjac -Created: 5/18/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - //spellhook - if(!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - effect eVis = EffectVisualEffect(VFX_COM_BLOOD_SPARK_LARGE); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nPenalty = 4; - int nDC = PRCGetSaveDC(oTarget, oPC); - int nDam = d6(2+(nCasterLvl/2)); - float fDur = (60.0f * nCasterLvl); - - PRCSignalSpellEvent(oTarget,TRUE, SPELL_THOUSAND_NEEDLES, oPC); - - if (!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl + SPGetPenetr()) && PRCGetIsAliveCreature(oTarget)) - { - //metamagic - if(nMetaMagic & METAMAGIC_EXTEND) - { - fDur = (fDur * 2); - } - - if(nMetaMagic & METAMAGIC_MAXIMIZE) - { - nDam = 6 * (2+(nCasterLvl/2)); - } - - if(nMetaMagic & METAMAGIC_EMPOWER) - { - nDam += (nDam/2); - } - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - //Save - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) - { - nDam = nDam/2; - - if (GetHasMettle(oTarget, SAVING_THROW_FORT)) - // This script does nothing if it has Mettle, bail - return; - } - - else - { - if(!PRCGetHasEffect(EFFECT_TYPE_DAMAGE_REDUCTION, oTarget)) - { - effect eLink = EffectAttackDecrease(nPenalty, ATTACK_BONUS_MISC); - eLink = EffectLinkEffects(eLink, EffectSavingThrowDecrease(SAVING_THROW_ALL, nPenalty, SAVING_THROW_TYPE_ALL)); - eLink = EffectLinkEffects(eLink, EffectSkillDecrease(SKILL_ALL_SKILLS, nPenalty)); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDur); - } - } - - //Apply damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); - } - - //SPEvilShift(oPC); - PRCSetSchool(); -} - - - - - diff --git a/_haks/poa_exp_spells/sp_touch_fatigue.ncs b/_haks/poa_exp_spells/sp_touch_fatigue.ncs deleted file mode 100644 index 3dae5860..00000000 Binary files a/_haks/poa_exp_spells/sp_touch_fatigue.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_touch_fatigue.nss b/_haks/poa_exp_spells/sp_touch_fatigue.nss deleted file mode 100644 index cbcf20b0..00000000 --- a/_haks/poa_exp_spells/sp_touch_fatigue.nss +++ /dev/null @@ -1,93 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Touch of Fatigue -//:: FileName sp_touch_fatigue.nss -//::////////////////////////////////////////////// -/* -Level: Sor/Wiz 0, Duskblade 0, Blighter 0 -Components: V, S -Casting Time: 1 standard action -Range: Touch -Target: Creature touched -Duration: 1 round/level -Saving Throw: Fort negates -Spell Resistance: Yes - -You channel negative energy through your touch, fatiguing the target. -You must succeed on a touch attack to strike a target. -The subject is immediately fatigued for the spell's duration. -This spell has no effect on a creature that is already fatigued. -Unlike with normal fatigue, the effect ends as soon as the spell's duration expires. - -**/ -//:://////////////////////////////////////////////// -//:: Author: Strat -//:: Date : 11.4.2020 -//:://////////////////////////////////////////////// - -#include "prc_inc_sp_tch" -#include "prc_sp_func" -#include "prc_add_spell_dc" -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nDie = PRCMin(nCasterLevel, 20); - object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget); - effect eVis = EffectVisualEffect(VFX_DUR_BIGBYS_BIGBLUE_HAND2); - - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, PRCGetSpellId())); - int iAttackRoll = PRCDoMeleeTouchAttack(oTarget, TRUE, oCaster); - - if(iAttackRoll > 0) - { - // Only creatures, and PvP check. - if(!GetIsReactionTypeFriendly(oTarget)) - { - // Check Spell Resistance - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, oCaster), SAVING_THROW_TYPE_SPELL)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectFatigue(), oTarget, nCasterLevel*6.0); - } - } - } - } - - return iAttackRoll;// return TRUE if spell charges should be decremented -} - -void main() -{ - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - if (!X2PreSpellCastCode()) return; - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { - //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_unliv_weap.ncs b/_haks/poa_exp_spells/sp_unliv_weap.ncs deleted file mode 100644 index f1426b97..00000000 Binary files a/_haks/poa_exp_spells/sp_unliv_weap.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_unliv_weap.nss b/_haks/poa_exp_spells/sp_unliv_weap.nss deleted file mode 100644 index 0b0ee002..00000000 --- a/_haks/poa_exp_spells/sp_unliv_weap.nss +++ /dev/null @@ -1,108 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Unliving Weapon -//:: FileName sp_unliv_weap.nss -//::////////////////////////////////////////////// -/**@file Unliving Weapon -Necromancy [Evil] -Level: Clr 3 -Components: V, S, M -Casting Time: 1 full round -Range: Touch -Targets: One undead creature -Duration: 1 hour/level -Saving Throw: Will negates -Spell Resistance: Yes - -This spell causes an undead creature to explode in a -burst of powerful energy when struck for at least 1 -point of damage, or at a set time no longer than the -duration of the spell, whichever comes first. The -explosion is a 10-foot radius burst that deals 1d6 -points of damage for every two caster levels -(maximum 10d6). - -While this spell can be an effective form of attack -against an undead creature, necromancers often use -unliving weapon to create undead capable of suicide -attacks (if such a term can be applied to something -that is already dead). Skeletons or zombies with this -spell cast upon them can be very dangerous to foes -that would normally disregard them. - -Material Component: A drop of bile and a bit of sulfur. - -Author: Tenjac -Created: 5/11/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -void HiImABomb(object oTarget, int nCounter, int nHP, int nCasterLvl, int nMetaMagic); - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - object oPC = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nPenetr = nCasterLvl + SPGetPenetr(); - float fDur = HoursToSeconds(nCasterLvl); - int nMetaMagic = PRCGetMetaMagicFeat(); - if(nMetaMagic & METAMAGIC_EXTEND) - fDur *= 2; - int nDC = PRCGetSaveDC(oTarget, oPC); - - //only works on undead - if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - if(GetMaster(oTarget) == oPC//casting on own undead - || (!PRCDoResistSpell(oPC, oTarget, nPenetr)//Spell Resistance - && !PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)))//Saving Throw - { - int nCounter = (FloatToInt(fDur))/3; - int nHP = GetCurrentHitPoints(oTarget); - - HiImABomb(oTarget, nCounter, nHP, nCasterLvl, nMetaMagic); - } - } - PRCSetSchool(); -} - -void HiImABomb(object oTarget, int nCounter, int nHP, int nCasterLvl, int nMetaMagic) -{ - if((nCounter < 1) || GetCurrentHitPoints(oTarget) < nHP) - { - //unused? - //effect eSplode = EffectDeath(TRUE, TRUE); - // eSplode = SupernaturalEffect(eSplode); - - location lLoc = GetLocation(oTarget); - int nDice = PRCMin((nCasterLvl/2), 20); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_BLINDDEAF), oTarget); - - object oOuch = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - while(GetIsObjectValid(oOuch)) - { - int nDam = d6(nDice); - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDam = 6 * nDice; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDam += (nDam/2); - - //Apply damage - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oOuch); - - //Get next victim - oOuch = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - } - nCounter--; - - DelayCommand(3.0f, HiImABomb(oTarget, nCounter, nHP, nCasterLvl, nMetaMagic)); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_wallfrosta.ncs b/_haks/poa_exp_spells/sp_wallfrosta.ncs deleted file mode 100644 index 013434e4..00000000 Binary files a/_haks/poa_exp_spells/sp_wallfrosta.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_wallfrosta.nss b/_haks/poa_exp_spells/sp_wallfrosta.nss deleted file mode 100644 index 0c9f8d68..00000000 --- a/_haks/poa_exp_spells/sp_wallfrosta.nss +++ /dev/null @@ -1,67 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Wall of Frost: On Enter -//:: SP_WallFrostA.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Person within the AoE take 4d6 cold damage - per round. -*/ -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - effect eDam; - object oTarget; - //Declare and assign personal impact visual effect. - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator()); - int CasterLvl = PRCGetCasterLevel(GetAreaOfEffectCreator()); - - //Capture the first target object in the shape. - oTarget = GetEnteringObject(); - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr)) - { - //Roll damage. - nDamage = d6(4+(CasterLvl/2)); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6*(4+(CasterLvl/2));//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget,GetAreaOfEffectCreator())), SAVING_THROW_TYPE_COLD); - if(nDamage > 0) - { - // Apply effects to the currently selected target. - eDam = PRCEffectDamage(oTarget, nDamage, ChangedElementalDamage(GetAreaOfEffectCreator(), DAMAGE_TYPE_COLD)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/sp_wallfrostc.ncs b/_haks/poa_exp_spells/sp_wallfrostc.ncs deleted file mode 100644 index 1fe2977e..00000000 Binary files a/_haks/poa_exp_spells/sp_wallfrostc.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_wallfrostc.nss b/_haks/poa_exp_spells/sp_wallfrostc.nss deleted file mode 100644 index 42d2a546..00000000 --- a/_haks/poa_exp_spells/sp_wallfrostc.nss +++ /dev/null @@ -1,93 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Wall of Frost: Heartbeat -//:: SP_WallFrostC.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Person within the AoE take 4d6 cold damage - per round. -*/ -//::////////////////////////////////////////////// -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - - -void main() -{ - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //Declare major variables - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - effect eDam; - object oTarget; - //Declare and assign personal impact visual effect. - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - //Capture the first target object in the shape. - - //-------------------------------------------------------------------------- - // GZ 2003-Oct-15 - // When the caster is no longer there, all functions calling - // GetAreaOfEffectCreator will fail. Its better to remove the barrier then - //-------------------------------------------------------------------------- - if (!GetIsObjectValid(GetAreaOfEffectCreator())) - { - DestroyObject(OBJECT_SELF); - return; - } - - int CasterLvl = PRCGetCasterLevel(GetAreaOfEffectCreator()); - - int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator(),CasterLvl); - int EleDmg = ChangedElementalDamage(GetAreaOfEffectCreator(), DAMAGE_TYPE_COLD); - - oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Declare the spell shape, size and the location. - while(GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr)) - { - //Roll damage. - nDamage = d6(4+(CasterLvl/2)); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 6*(4+(CasterLvl/2));//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - } - - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - - int nDC = PRCGetSaveDC(oTarget,GetAreaOfEffectCreator()); - - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (nDC), SAVING_THROW_TYPE_COLD); - if(nDamage > 0) - { - // Apply effects to the currently selected target. - eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 1.0,FALSE); - } - } - } - //Select the next target within the spell shape. - oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Getting rid of the integer used to hold the spells spell school -} diff --git a/_haks/poa_exp_spells/sp_wrtch_blght.ncs b/_haks/poa_exp_spells/sp_wrtch_blght.ncs deleted file mode 100644 index e4317799..00000000 Binary files a/_haks/poa_exp_spells/sp_wrtch_blght.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/sp_wrtch_blght.nss b/_haks/poa_exp_spells/sp_wrtch_blght.nss deleted file mode 100644 index 45b66a81..00000000 --- a/_haks/poa_exp_spells/sp_wrtch_blght.nss +++ /dev/null @@ -1,105 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name Wretched Blight -//:: FileName sp_wrtch_blght.nss -//::////////////////////////////////////////////// -/**@file Wretched Blight -Evocation [Evil] -Level: Clr 7 -Components: V, S -Casting Time: 1 action -Range: Medium (100 ft. + 10 ft./level) -Area: 20-ft.-radius spread -Duration: Instantaneous -Saving Throw: Fortitude partial (see text) -Spell Resistance: Yes - -The caster calls up unholy power to smite his enemies. -The power takes the form of a soul chilling mass of -clawing darkness. Only good and neutral (not evil) -creatures are harmed by the spell. - -The spell deals 1d8 pts of damage per caster level -(maximum 15d8) to good creatures and renders them -stunned for 1d4 rounds. A successful Fortitude save -reduces damage to half and negates the stunning effect. - -The spell deals only half damage to creatures that -are neither evil nor good, and they are not stunned. -Such creatures can reduce the damage in half again -(down to one­quarter of the roll) with a successful -Reflex save. - -Author: Tenjac -Created: 5/9/06 -*/ -//::////////////////////////////////////////////// -//::////////////////////////////////////////////// - -#include "prc_inc_spells" -#include "prc_add_spell_dc" -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - object oPC = OBJECT_SELF; - location lLoc = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oPC); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDice = PRCMin(nCasterLvl, 60); - int nAlign; - int nDam; - int nDC; - nCasterLvl += SPGetPenetr(); - effect eVis = EffectVisualEffect(VFX_DUR_DARKNESS); - effect eDam; - - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lLoc, FALSE, OBJECT_TYPE_CREATURE); - - //apply VFX - ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, lLoc, 3.0f); - - while(GetIsObjectValid(oTarget)){ - nAlign = GetAlignmentGoodEvil(oTarget); - if(nAlign != ALIGNMENT_EVIL){ - //SR - if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl)){ - nDam = d8(nDice); - - //Metmagic: Maximize - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDam = 8 * nDice; - - //Metmagic: Empower - if(nMetaMagic & METAMAGIC_EMPOWER) - nDam += (nDam/2); - - // 1/2 damage for neutral targets - if(nAlign == ALIGNMENT_NEUTRAL) - nDam = nDam/2; - - nDC = PRCGetSaveDC(oTarget, oPC); - - //Save for 1/2 dam - if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL)){ - //This script does nothing if it has Mettle, bail - if(GetHasMettle(oTarget, SAVING_THROW_FORT)) - continue; - nDam = nDam/2; - } - else if(nAlign == ALIGNMENT_GOOD){ - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, RoundsToSeconds(d4(1))); - } - - //Apply Damage - eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lLoc, FALSE, OBJECT_TYPE_CREATURE); - } - //SPEvilShift(oPC); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x0_s0_acidsplash.ncs b/_haks/poa_exp_spells/x0_s0_acidsplash.ncs deleted file mode 100644 index 182f2b73..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_acidsplash.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_acidsplash.nss b/_haks/poa_exp_spells/x0_s0_acidsplash.nss deleted file mode 100644 index a1fab4b1..00000000 --- a/_haks/poa_exp_spells/x0_s0_acidsplash.nss +++ /dev/null @@ -1,66 +0,0 @@ - //:://///////////////////////////////////////////// -//:: Acid Splash -//:: [X0_S0_AcidSplash.nss] -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* -Acid Splash -Conjuration (Creation) [Acid] -Level: Sor/Wiz 0 -Components: V, S -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Effect: One missile of acid -Duration: Instantaneous -Saving Throw: None -Spell Resistance: No - -You fire a small orb of acid at the target. You -must succeed on a ranged touch attack to hit your -target. The orb deals 1d3 points of acid damage. - -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 17 2002 -//::////////////////////////////////////////////// -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff - -#include "prc_inc_sp_tch" - -void main() -{ - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_ACID); - effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); -int nCasterLevel = PRCGetCasterLevel(oCaster); - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_ACID_SPLASH)); - - int iAttackRoll = PRCDoRangedTouchAttack(oTarget); - if(iAttackRoll > 0) - { - int nDamage = PRCMaximizeOrEmpower(3, nCasterLevel, nMetaMagic); //alterei o 1 por caster lvl do char - // Acid Sheath adds +1 damage per die to acid descriptor spells - if (GetHasDescriptor(SPELL_ACID_SPLASH, DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, oCaster)) - nDamage += 1; - - //Apply the VFX impact and damage effect - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - // perform attack roll for ray and deal proper damage - ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDamage, EleDmg); - PRCBonusDamage(oTarget); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/x0_s0_bigby2.ncs b/_haks/poa_exp_spells/x0_s0_bigby2.ncs deleted file mode 100644 index 73bf45e1..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_bigby2.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_bigby2.nss b/_haks/poa_exp_spells/x0_s0_bigby2.nss deleted file mode 100644 index 470d1e96..00000000 --- a/_haks/poa_exp_spells/x0_s0_bigby2.nss +++ /dev/null @@ -1,94 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bigby's Forceful Hand -//:: [x0_s0_bigby2] -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* - dazed vs strength check (+14 on strength check); Target knocked down. - Target dazed down for 1 round per level of caster - -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: September 7, 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs May 01, 2003 - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff - -#include "prc_inc_spells" -#include "prc_inc_combmove" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nDuration = CasterLvl; - int nMetaMagic = PRCGetMetaMagicFeat(); - //Check for metamagic extend - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) //Duration is +100% - { - nDuration = nDuration * 2; - } - if(!GetIsReactionTypeFriendly(oTarget)) - { - // Apply the impact effect - effect eImpact = EffectVisualEffect(VFX_IMP_BIGBYS_FORCEFUL_HAND); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oTarget); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 460, TRUE)); - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl+ SPGetPenetr())) - { - - int nCasterRoll = d20()+ (CasterLvl/2) + 14; - int nTargetRoll = d20(1) + GetAbilityModifier(ABILITY_STRENGTH, oTarget) + PRCGetSizeModifier(oTarget); - // * bullrush succesful, knockdown target for duration of spell - if (nCasterRoll >= nTargetRoll) - { - effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); - effect eKnockdown = EffectDazed(); - effect eKnockdown2 = EffectKnockdown(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - //Link effects - effect eLink = EffectLinkEffects(eKnockdown, eDur); - eLink = EffectLinkEffects(eLink, eKnockdown2); - //Apply the penalty - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, RoundsToSeconds(nDuration),FALSE); - // * Bull Rush succesful - FloatingTextStrRefOnCreature(8966,OBJECT_SELF, FALSE); - } - else - { - FloatingTextStrRefOnCreature(8967,OBJECT_SELF, FALSE); - } - } - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - - diff --git a/_haks/poa_exp_spells/x0_s0_bigby4.ncs b/_haks/poa_exp_spells/x0_s0_bigby4.ncs deleted file mode 100644 index 9bd72287..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_bigby4.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_bigby4.nss b/_haks/poa_exp_spells/x0_s0_bigby4.nss deleted file mode 100644 index 134361e4..00000000 --- a/_haks/poa_exp_spells/x0_s0_bigby4.nss +++ /dev/null @@ -1,143 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bigby's Clenched Fist -//:: [x0_s0_bigby4] -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* - Does an attack EACH ROUND for 1 round/level. - If the attack hits does - 1d8 +12 points of damage - - Any creature struck must make a FORT save or - be stunned for one round. - - GZ, Oct 15 2003: - Changed how this spell works by adding duration - tracking based on the VFX added to the character. - Makes the spell dispellable and solves some other - issues with wrong spell DCs, checks, etc. - -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: September 7, 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Georg Zoeller October 15, 2003 - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - - -#include "prc_add_spell_dc" - - - -int nSpellID = 462; - -void RunHandImpact(object oTarget, object oCaster,int CasterLvl, int nAbilityModifier ) -{ - //-------------------------------------------------------------------------- - // Check if the spell has expired (check also removes effects) - //-------------------------------------------------------------------------- - if (PRCGetDelayedSpellEffectsExpired(nSpellID,oTarget,oCaster)) - { - return; - } - - int nCasterModifiers = nAbilityModifier - + PRCGetCasterLevel(oCaster); - int nCasterRoll = d20(1) + nCasterModifiers + 11 + -1; - int nTargetRoll = GetAC(oTarget); - if (nCasterRoll >= nTargetRoll) - { - int nDC = GetLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (nSpellID)); - - int nDam = PRCMaximizeOrEmpower(8, 1, PRCGetMetaMagicFeat(), 11+CasterLvl); - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_BLUDGEONING); - effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, RoundsToSeconds(1),TRUE,-1,CasterLvl); - } - - DelayCommand(6.0f,RunHandImpact(oTarget,oCaster,CasterLvl,nAbilityModifier)); - - } -} - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - /* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - */ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - // End of Spell Cast Hook - - object oTarget = PRCGetSpellTargetObject(); - int nClassType = PRCGetLastSpellCastClass(); - int nAbilityModifier = (GetAbilityScoreForClass(nClassType, OBJECT_SELF) -10)/2; - - //-------------------------------------------------------------------------- - // This spell no longer stacks. If there is one hand, that's enough - //-------------------------------------------------------------------------- - if (GetHasSpellEffect(nSpellID,oTarget) || GetHasSpellEffect(463,oTarget) ) - { - FloatingTextStrRefOnCreature(100775,OBJECT_SELF,FALSE); - return; - } - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nDuration = CasterLvl; - - int nMetaMagic = PRCGetMetaMagicFeat(); - if ((nMetaMagic & METAMAGIC_EXTEND)) - { - nDuration = nDuration * 2; - } - - if(!GetIsReactionTypeFriendly(oTarget)) - { - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpellID, TRUE)); - int nResult = PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl +SPGetPenetr()); - - if(nResult == 0) - { - effect eHand = EffectVisualEffect(VFX_DUR_BIGBYS_CLENCHED_FIST); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHand, oTarget, RoundsToSeconds(nDuration),FALSE); - - //---------------------------------------------------------- - // GZ: 2003-Oct-15 - // Save the current save DC on the character because - // PRCGetSaveDC won't work when delayed - //---------------------------------------------------------- - SetLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (nSpellID), PRCGetSaveDC(oTarget, OBJECT_SELF)); - object oSelf = OBJECT_SELF; - RunHandImpact(oTarget,OBJECT_SELF,CasterLvl, nAbilityModifier); - - } - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school - -} - diff --git a/_haks/poa_exp_spells/x0_s0_bigby5.ncs b/_haks/poa_exp_spells/x0_s0_bigby5.ncs deleted file mode 100644 index 03979968..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_bigby5.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_bigby5.nss b/_haks/poa_exp_spells/x0_s0_bigby5.nss deleted file mode 100644 index c19c447d..00000000 --- a/_haks/poa_exp_spells/x0_s0_bigby5.nss +++ /dev/null @@ -1,170 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bigby's Crushing Hand -//:: [x0_s0_bigby5] -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* - Similar to Bigby's Grasping Hand. - If Grapple succesful then will hold the opponent and do 2d6 + 12 points - of damage EACH round for 1 round/level - - - // Mark B's famous advice: - // Note: if the target is dead during one of these second-long heartbeats, - // the DelayCommand doesn't get run again, and the whole package goes away. - // Do NOT attempt to put more than two parameters on the delay command. They - // may all end up on the stack, and that's all bad. 60 x 2 = 120. - -*/ - -// -// Altered to calculate grapple check correctly per pnp rules. -// - -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: September 7, 2002 -//::////////////////////////////////////////////// -//:: VFX Pass By: - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_combmove" - -int nSpellID = 463; -void RunHandImpact(object oTarget, object oCaster) -{ - - //-------------------------------------------------------------------------- - // Check if the spell has expired (check also removes effects) - //-------------------------------------------------------------------------- - if (PRCGetDelayedSpellEffectsExpired(nSpellID,oTarget,oCaster)) - { - return; - } -int CasterLvl = PRCGetCasterLevel(oCaster); - int nDam = PRCMaximizeOrEmpower(6,2,PRCGetMetaMagicFeat(), 12+CasterLvl); - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_BLUDGEONING); - effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - DelayCommand(6.0f,RunHandImpact(oTarget,oCaster)); -} - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - /* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - */ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - // End of Spell Cast Hook - - object oTarget = PRCGetSpellTargetObject(); - - //-------------------------------------------------------------------------- - // This spell no longer stacks. If there is one hand, that's enough - //-------------------------------------------------------------------------- - if (GetHasSpellEffect(nSpellID,oTarget) || GetHasSpellEffect(462,oTarget) ) - { - FloatingTextStrRefOnCreature(100775,OBJECT_SELF,FALSE); - return; - } - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nDuration = CasterLvl; - int nClassType = PRCGetLastSpellCastClass(); - int nAbilityModifier = (GetAbilityScoreForClass(nClassType, OBJECT_SELF) -10)/2; - - int nMetaMagic = PRCGetMetaMagicFeat(); - - //Check for metamagic extend - if ((nMetaMagic & METAMAGIC_EXTEND)) //Duration is +100% - { - nDuration = nDuration * 2; - } - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_BIGBYS_CRUSHING_HAND, TRUE)); - - //SR - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl+ SPGetPenetr())) - { - int nCasterRoll = d20(1) - + nAbilityModifier - + CasterLvl + 12 + -1; - int nTargetRoll = GetAC(oTarget); - - // Give the caster feedback about the grapple check if he is a PC. - if (GetIsPC(OBJECT_SELF)) - { - SendMessageToPC(OBJECT_SELF, nCasterRoll >= nTargetRoll ? - "Bigby's Crushing Hand hit" : "Bigby's Grasping Hand missed"); - } - - // * grapple HIT succesful, - if (nCasterRoll >= nTargetRoll) - { - // * now must make a GRAPPLE check - // * hold target for duration of spell - - nCasterRoll = d20(1) + nAbilityModifier - +CasterLvl + 12 + 4; - - int nGrapple = _DoGrappleCheck(OBJECT_INVALID, oTarget, nCasterRoll); - - // Give the caster feedback about the grapple check if he is a PC. - if (GetIsPC(OBJECT_SELF)) - { - string suffix = nCasterRoll >= nTargetRoll ? ", success" : ", failure"; - SendMessageToPC(OBJECT_SELF, "Grapple check " + IntToString(nCasterRoll) + - " vs. " + IntToString(nTargetRoll) + suffix); - } - - if (nGrapple) - { - effect eKnockdown = EffectParalyze(); - - // creatures immune to paralzation are still prevented from moving - if (GetIsImmune(oTarget, EFFECT_TYPE_PARALYZE) == FALSE) - eKnockdown = EffectCutsceneImmobilize(); - - effect eHand = EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND); - effect eLink = EffectLinkEffects(eKnockdown, eHand); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, - eLink, oTarget, - RoundsToSeconds(nDuration),TRUE,-1,CasterLvl); - - object oSelf = OBJECT_SELF; - RunHandImpact(oTarget, oSelf); - FloatingTextStrRefOnCreature(2478, OBJECT_SELF); - - } - else - { - FloatingTextStrRefOnCreature(83309, OBJECT_SELF); - } - } - } - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school - -} - - diff --git a/_haks/poa_exp_spells/x0_s0_bombard.ncs b/_haks/poa_exp_spells/x0_s0_bombard.ncs deleted file mode 100644 index e65cd6b2..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_bombard.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_bombard.nss b/_haks/poa_exp_spells/x0_s0_bombard.nss deleted file mode 100644 index 65238828..00000000 --- a/_haks/poa_exp_spells/x0_s0_bombard.nss +++ /dev/null @@ -1,119 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Bombardment -//:: X0_S0_Bombard -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* -// Rocks fall from sky -// 1d8 damage/level to a max of 10d8 -// Reflex save for half -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 22 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs May 01, 2003 - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - - -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oCaster = OBJECT_SELF; - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nCasterLvl = CasterLvl; - CasterLvl +=SPGetPenetr(); - - - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage; - float fDelay; - effect eExplode = EffectVisualEffect(VFX_FNF_METEOR_SWARM); - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); - effect eDam; - //Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - //Limit Caster level for the purposes of damage - if (nCasterLvl > 60) - { - nCasterLvl = 60; - } - - //Apply the fireball explosion at the location captured above. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) == TRUE) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); - //Get the distance between the explosion and the target to calculate delay - fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay)) - { - int nSpellDC = (PRCGetSaveDC(oTarget,OBJECT_SELF)) ; - //Roll damage for each target - nDamage = d8(nCasterLvl); - //Resolve metamagic - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = 8 * nCasterLvl; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + nDamage / 2; - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSpellDC, SAVING_THROW_TYPE_ALL); - //Set the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_BLUDGEONING); - if(nDamage > 0) - { - - // Apply effects to the currently selected target. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - //This visual effect is applied to the target object not the location as above. This visual effect - //represents the flame that erupts on the target not on the ground. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - - - diff --git a/_haks/poa_exp_spells/x0_s0_divfav.ncs b/_haks/poa_exp_spells/x0_s0_divfav.ncs deleted file mode 100644 index 505e1ac0..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_divfav.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_divfav.nss b/_haks/poa_exp_spells/x0_s0_divfav.nss deleted file mode 100644 index c7499645..00000000 --- a/_haks/poa_exp_spells/x0_s0_divfav.nss +++ /dev/null @@ -1,70 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Divine Favor -//:: x0_s0_divfav.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -Evocation -Level: Clr 1, Pal 1 -Components: V, S, DF -Casting Time: 1 standard action -Range: Personal -Target: You -Duration: 1 minute - -Calling upon the strength and wisdom of a deity, -you gain a +1 luck bonus on attack and weapon -damage rolls for every three caster levels you -have (at least +1, maximum +5). The bonus doesn’t -apply to spell damage. - -NOTE: Official rules say +6, we can only go to +5 - Duration: 1 turn -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent Knowles -//:: Created On: July 15, 2002 -//::////////////////////////////////////////////// -//:: VFX Pass By: -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -//:: Updated by Strat to fix bug - -#include "prc_inc_spells" - -void main() -{ - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - int CasterLvl = PRCGetCasterLevel(oCaster); - int nMetaMagic = PRCGetMetaMagicFeat(); - float fDuration = TurnsToSeconds(1); // * Duration 1 turn - if(nMetaMagic & METAMAGIC_EXTEND) - fDuration *= 2; - int nScale = PRCMin(20, PRCMax(1, CasterLvl / 3)); - - effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY); - - // * determine the damage bonus to apply - effect eAttack = EffectAttackIncrease(nScale); - effect eDamage = EffectDamageIncrease(nScale, DAMAGE_TYPE_MAGICAL); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eLink = EffectLinkEffects(eAttack, eDamage); - eLink = EffectLinkEffects(eLink, eDur); - - //Apply Impact - effect eImpact = EffectVisualEffect(VFX_FNF_LOS_HOLY_30); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation()); - - //Fire spell cast at event for target - SignalEvent(oCaster, EventSpellCastAt(oCaster, SPELL_DIVINE_FAVOR, FALSE)); - - //Apply VFX impact and bonus effects - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oCaster, fDuration, TRUE, SPELL_DIVINE_FAVOR, CasterLvl); - - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/x0_s0_earthquake.ncs b/_haks/poa_exp_spells/x0_s0_earthquake.ncs deleted file mode 100644 index e0183272..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_earthquake.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_earthquake.nss b/_haks/poa_exp_spells/x0_s0_earthquake.nss deleted file mode 100644 index 9bc68898..00000000 --- a/_haks/poa_exp_spells/x0_s0_earthquake.nss +++ /dev/null @@ -1,138 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Earthquake -//:: X0_S0_Earthquake -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* -// Ground shakes. 1d6 damage, max 10d6 -// LOCKINDAL: Changed to alternate: DC 15 or knock down, 25% creatures must make DC 20 or die. -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 22 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs May 01, 2003 -//:: Altered By: Lockindal - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - -#include "prc_alterations" -#include "prc_add_spell_dc" - -void DoQuake(object oCaster, int nCasterLvl, location lTarget) -{ - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - int nSpectacularDeath = TRUE; - int nDisplayFeedback = TRUE; - int bInside = GetIsAreaInterior(GetArea(oCaster)); - int nProneDC = 15 + (nCasterLvl/2); - int nDamageDC = 15 + (nCasterLvl/2); - int nFissureDC = 20 + (nCasterLvl/2); - int nDamage; - float fDelay; - float fSize = FeetToMeters(80.0f); - float fProneDur = 18.0; - effect eExplode = EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM); - effect eExplode2 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_NATURE); - effect eExplode3 = EffectVisualEffect(VFX_IMP_DUST_EXPLOSION); - effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE); - effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE2); - effect eKnockdown = EffectKnockdown(); - - // Perform screen shake - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oCaster); - - //Apply epicenter explosion on caster - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, GetLocation(oCaster)); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode2, GetLocation(oCaster)); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode3, GetLocation(oCaster)); - - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fSize, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while(GetIsObjectValid(oTarget)) - { - // Normal targeting restriction, except also skip affecting the caster - if(oTarget != oCaster && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - // Let the target's AI know - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_EARTHQUAKE)); - - // First, always knock targets prone, DC 15 to avoid - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nProneDC, SAVING_THROW_TYPE_SPELL, oCaster)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnockdown, oTarget, fProneDur, FALSE, SPELL_EARTHQUAKE, nCasterLvl, oCaster); - } - - // Indoors, get hit by falling rubble for 8d6, reflex half - if(bInside) - { - nDamage = PRCGetReflexAdjustedDamage(d6(nCasterLvl), oTarget, nDamageDC, SAVING_THROW_TYPE_SPELL, oCaster); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_ENERGY), - oTarget, 0.0f, FALSE, SPELL_EARTHQUAKE, nCasterLvl, oCaster); - } - // Outdoors, 25% chance to fall into a fissure and die - else - { - if(d4() == 4) - { - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nFissureDC, SAVING_THROW_TYPE_SPELL, oCaster)) - { - DeathlessFrenzyCheck(oTarget); - /// @todo Find appropriate VFX to play here - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(nSpectacularDeath, nDisplayFeedback), - oTarget, 0.0f, FALSE, SPELL_EARTHQUAKE, nCasterLvl, oCaster); - } - } - } - } - - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, fSize, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - - PRCSetSchool(); -} - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nMetaMagic = PRCGetMetaMagicFeat(); - - // Perform the earthquake - DoQuake(oCaster, nCasterLvl, lTarget); - - // Extended earthquake - apply the effects again next round - if(nMetaMagic & METAMAGIC_EXTEND) - DelayCommand(6.0f, DoQuake(oCaster, nCasterLvl, lTarget)); - -// Erasing the variable used to store the spell's spell school -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x0_s0_elecjolt.ncs b/_haks/poa_exp_spells/x0_s0_elecjolt.ncs deleted file mode 100644 index 5c13179a..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_elecjolt.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_elecjolt.nss b/_haks/poa_exp_spells/x0_s0_elecjolt.nss deleted file mode 100644 index 14ba4bac..00000000 --- a/_haks/poa_exp_spells/x0_s0_elecjolt.nss +++ /dev/null @@ -1,93 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Electric Jolt -//:: [x0_s0_ElecJolt.nss] -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* -Evocation [Electricity] -Level: Sorcerer/wizard 0 -Components: V, S -Casting Time: 1 standard action -Range: Close (25 ft. + 5 ft./2 levels) -Effect: Ray -Duration: Instantaneous -Saving Throw: None -Spell Resistance: Yes - -You release a small stroke of electrical energy. -You must succeed on a ranged touch attack with the -ray to strike a target. The spell deals 1d3 points -of electricity damage. - -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 17 2002 -//::////////////////////////////////////////////// -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff - -#include "prc_sp_func" -#include "prc_inc_sp_tch" - -int DoSpell(object oCaster, object oTarget, int nCasterLevel) -{ - //Declare major variables - int nPenetr = nCasterLevel + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_ELECTRICAL); - int iAttackRoll = 0; - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_ELECTRIC_JOLT)); - - iAttackRoll = PRCDoRangedTouchAttack(oTarget); - if(iAttackRoll > 0) - { - //Make SR Check - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) - { - int nDamage = PRCMaximizeOrEmpower(nPenetr, 1, nMetaMagic); //alterei o 3 por caster lvl+spell penetration - - //Apply the VFX impact and damage effect - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - // perform attack roll for ray and deal proper damage - ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDamage, EleDmg); - PRCBonusDamage(oTarget); - } - } - } - return iAttackRoll; //return TRUE if spell charges should be decremented -} - -void main() -{ - if (!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if (GetLocalInt(oCaster, PRC_SPELL_HOLD) && GetHasFeat(FEAT_EF_HOLD_RAY, oCaster) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - if(oCaster != oTarget) //cant target self with this spell, only when holding charge - DoSpell(oCaster, oTarget, nCasterLevel); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} diff --git a/_haks/poa_exp_spells/x0_s0_ether.ncs b/_haks/poa_exp_spells/x0_s0_ether.ncs deleted file mode 100644 index 051d75cd..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_ether.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_ether.nss b/_haks/poa_exp_spells/x0_s0_ether.nss deleted file mode 100644 index e002e1a9..00000000 --- a/_haks/poa_exp_spells/x0_s0_ether.nss +++ /dev/null @@ -1,113 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Etherealness -//:: x0_s0_ether.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Like sanctuary except almost always guaranteed - to work. - Lasts one turn per level. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 7, 2002 -//::////////////////////////////////////////////// - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" -#include "prc_inc_teleport" - - - -void main() -{ - - -//Spell Time Lock duration (in seconds, use float values) -float iLockTimer = 240.0; -//Defining time variables -float f120togo = ( 120 - iLockTimer ) * -1; -float f60togo = ( 60 - iLockTimer ) * -1; -float f10togo = ( 10 - iLockTimer ) * -1; - -//Checking spell's caster -object oTarget = PRCGetSpellTargetObject(); -//Checking if he used GS recently -int iTimer = GetLocalInt(oTarget, "GSTimer"); - - - - if (iTimer == 0) //teste - { - SetLocalInt(oTarget, "GSTimer", 1); - //Change: Checking target's area - object oArea = GetArea(oTarget); - - - - DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); - SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - effect eVis = EffectVisualEffect(VFX_DUR_SANCTUARY); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eSanc = EffectEthereal(); - - effect eLink = EffectLinkEffects(eVis, eSanc); - eLink = EffectLinkEffects(eLink, eDur); - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nDuration = CasterLvl/10; //nerfei a duracao aqui - //Enter Metamagic conditions - int nMetaMagic = PRCGetMetaMagicFeat(); - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) - { - nDuration = nDuration *2; //Duration is +100% - } - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_ETHEREALNESS, FALSE)); - - // Make a check to see nothing is preventing extra-dimensional movement - if(GetCanTeleport(oTarget, GetLocation(oTarget), FALSE, TRUE)) - { - //Apply the VFX impact and effects - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(nDuration),TRUE,-1,CasterLvl/10); //casterlvl/10 aqui antes era so casterlvl - } - - DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); - // Erasing the variable used to store the spell's spell school - - SendMessageToAllDMs("Player "+ObjectToString(oTarget)+" has just cast Greater Sanctuary. He is currently in "+ObjectToString(oArea)+"."); - SendMessageToPC(oTarget, "Greater Sanctuary has a timer of "+FloatToString(iLockTimer, 3, 1)+" seconds. You may not use GS again for this period of time. Attempting to do so will spend the spell while producing no effect."); - DelayCommand(f120togo, SendMessageToPC(oTarget, "You have two minutes left on your Greater Sanctuary Lock Timer.")); - DelayCommand(f60togo, SendMessageToPC(oTarget, "You have one minute left on your Greater Sanctuary Lock Timer.")); - DelayCommand(f10togo, SendMessageToPC(oTarget, "You have 10 seconds left on your Greater Sanctuary Lock Timer.")); - DelayCommand(iLockTimer, SendMessageToPC(oTarget, "Greater Sanctuary is once again available for use.")); - DelayCommand(iLockTimer, SetLocalInt(oTarget, "GSTimer", 0)); - } - else - { - SendMessageToPC(oTarget, "You have used Greater Sanctuary too recently, the effect has been cancelled"); - } -} - - - diff --git a/_haks/poa_exp_spells/x0_s0_firebrand.ncs b/_haks/poa_exp_spells/x0_s0_firebrand.ncs deleted file mode 100644 index f4dfdb96..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_firebrand.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_firebrand.nss b/_haks/poa_exp_spells/x0_s0_firebrand.nss deleted file mode 100644 index 19f2ebee..00000000 --- a/_haks/poa_exp_spells/x0_s0_firebrand.nss +++ /dev/null @@ -1,226 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Firebrand -//:: x0_x0_Firebrand -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* -// * Fires a flame arrow to every target in a -// * colossal area -// * Each target explodes into a small fireball for -// * 1d6 damage / level (max = 15 levels) -// * Only nLevel targets can be affected -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 29 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: - -// -// Altered to give targets reflex saves per pnp. -// - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - - -#include "prc_add_spell_dc" - -void DoFirebrand(int CasterLvl,int nD6Dice, int nCap, int nSpell, - int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE, - int nDAMAGETYPE = DAMAGE_TYPE_MAGICAL, int nONEHIT = FALSE); - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nDamage = CasterLvl/2; - if (nDamage > 40) - nDamage = 40; - - - - // Changed to local function to add reflex save. - DoFirebrand(CasterLvl,nDamage, nDamage/2, SPELL_FIREBRAND, VFX_IMP_MIRV_FLAME, VFX_IMP_FLAME_M, ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE), FALSE); - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school - -} - - - -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 31, 2002 -//::////////////////////////////////////////////// -//:: Modified March 14 2003: Removed the option to hurt chests/doors -//:: was potentially causing bugs when no creature targets available. -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 31, 2002 -//::////////////////////////////////////////////// -//:: Modified March 14 2003: Removed the option to hurt chests/doors -//:: was potentially causing bugs when no creature targets available. -void DoFirebrand(int CasterLvl,int nD6Dice, int nCap, int nSpell, int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE, int nDAMAGETYPE = DAMAGE_TYPE_MAGICAL, int nONEHIT = FALSE) -{ - object oTarget = OBJECT_INVALID; - int nDamage = 0; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCnt = 1; - effect eMissile = EffectVisualEffect(nMIRV); - effect eVis = EffectVisualEffect(nVIS); - float fDist = 0.0; - float fDelay = 0.0; - float fDelay2, fTime; - location lTarget = PRCGetSpellTargetLocation(); // missile spread centered around caster - int nMissiles = CasterLvl; - - if (nMissiles > nCap) - { - nMissiles = nCap; - } - - /* New Algorithm - 1. Count # of targets - 2. Determine number of missiles - 3. First target gets a missile and all Excess missiles - 4. Rest of targets (max nMissiles) get one missile - */ - int nEnemies = 0; - int nCasterlvl = CasterLvl +SPGetPenetr(); - - - - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget) ) - { - // * caster cannot be harmed by this spell - if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && (oTarget != OBJECT_SELF)) - { - // GZ: You can only fire missiles on visible targets - if (GetObjectSeen(oTarget,OBJECT_SELF)) - { - nEnemies++; - } - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - - if (nEnemies == 0) return; // * Exit if no enemies to hit - int nExtraMissiles = nMissiles / nEnemies; - - // April 2003 - // * if more enemies than missiles, need to make sure that at least - // * one missile will hit each of the enemies - if (nExtraMissiles <= 0) - { - nExtraMissiles = 1; - } - - // by default the Remainder will be 0 (if more than enough enemies for all the missiles) - int nRemainder = 0; - - if (nExtraMissiles >0) - nRemainder = nMissiles % nEnemies; - - if (nEnemies > nMissiles) - nEnemies = nMissiles; - - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget) && nCnt <= nEnemies) - { - // * caster cannot be harmed by this spell - if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && (oTarget != OBJECT_SELF) && (GetObjectSeen(oTarget,OBJECT_SELF))) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpell)); - - // * recalculate appropriate distances - fDist = GetDistanceBetween(OBJECT_SELF, oTarget); - fDelay = fDist/(3.0 * log(fDist) + 2.0); - - // Firebrand. - // It means that once the target has taken damage this round from the - // spell it won't take subsequent damage - if (nONEHIT == TRUE) - { - nExtraMissiles = 1; - nRemainder = 0; - } - - int i = 0; - //-------------------------------------------------------------- - // GZ: Moved SR check out of loop to have 1 check per target - // not one check per missile, which would rip spell mantels - // apart - //-------------------------------------------------------------- - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterlvl, fDelay)) - { - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - for (i=1; i <= nExtraMissiles + nRemainder; i++) - { - //Roll damage - int nDam = d6(nD6Dice); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDam = nD6Dice*6;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDam = nDam + nDam/2; //Damage/Healing is +50% - } - if(i == 1) //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - fTime = fDelay; - fDelay2 += 0.1; - fTime += fDelay2; - - // Adjust damage for reflex save / evasion / imp evasion - nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, - nDC, SAVING_THROW_TYPE_FIRE); - - // Always apply missle but only apply impact/damage if we really have damage. - DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget)); - if (nDam > 0) - { - //Set damage effect - effect eDam = PRCEffectDamage(oTarget, nDam, nDAMAGETYPE); - //Apply the MIRV and damage effect - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0f,TRUE,-1,CasterLvl)); - DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - } - } - } // for - else - { // * apply a dummy visual effect - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget); - } - nCnt++;// * increment count of missiles fired - nRemainder = 0; - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - -} diff --git a/_haks/poa_exp_spells/x0_s0_flare.ncs b/_haks/poa_exp_spells/x0_s0_flare.ncs deleted file mode 100644 index 828caf63..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_flare.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_flare.nss b/_haks/poa_exp_spells/x0_s0_flare.nss deleted file mode 100644 index 68639028..00000000 --- a/_haks/poa_exp_spells/x0_s0_flare.nss +++ /dev/null @@ -1,81 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Flare -//:: [X0_S0_Flare.nss] -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* - Creature hit by ray loses 1 to attack rolls. - - DURATION: 10 rounds. -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 17 2002 -//::////////////////////////////////////////////// - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - - -#include "prc_add_spell_dc" - -void main() -{ - - //if (GetHasFeat(FEAT_SHADOWWEAVE,OBJECT_SELF)) return; - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nCasterLevel = CasterLvl + SPGetPenetr(); - - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 416)); - - // * Apply the hit effect so player knows something happened - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - // If already blinded no affect - if(!PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, oTarget) && (GetRacialType(oTarget) != RACIAL_TYPE_OOZE) && PRCGetIsAliveCreature(oTarget)) - { - //Make SR Check - if((!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterLevel))) - { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (PRCGetSaveDC(oTarget,OBJECT_SELF)))) - { - //Set damage effect - effect eBad = EffectAttackDecrease(1+(nCasterLevel/4)); - //Apply the VFX impact and damage effect - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBad, oTarget, RoundsToSeconds(10),TRUE,-1,CasterLvl); - } - } - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - - diff --git a/_haks/poa_exp_spells/x0_s0_gmagicfang.ncs b/_haks/poa_exp_spells/x0_s0_gmagicfang.ncs deleted file mode 100644 index e1daab89..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_gmagicfang.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_gmagicfang.nss b/_haks/poa_exp_spells/x0_s0_gmagicfang.nss deleted file mode 100644 index e9c41d1a..00000000 --- a/_haks/poa_exp_spells/x0_s0_gmagicfang.nss +++ /dev/null @@ -1,144 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Greater Magic Fang -//:: x0_s0_gmagicfang.nss -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* - +1 enhancement bonus to attack and damage rolls. - Also applys damage reduction +1; this allows the creature - to strike creatures with +1 damage reduction. - - Checks to see if a valid summoned monster or animal companion - exists to apply the effects to. If none exists, then - the spell is wasted. - -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent Knowles -//:: Created On: September 6, 2002 -//::////////////////////////////////////////////// -//:: VFX Pass By: - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void CheckStillUnarmed(object oTarget) -{ - //only works if you have nothing in right & left hands - if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget)) - || GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget))) - { - FloatingTextStrRefOnCreature(8962, OBJECT_SELF, FALSE); - //remove other magic fang effects - PRCRemoveSpellEffects(452, OBJECT_SELF, oTarget); - PRCRemoveSpellEffects(453, OBJECT_SELF, oTarget); - return; // has neither an animal companion - } - DelayCommand(1.0, CheckStillUnarmed(oTarget)); -} - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); - int nPower = (nCasterLevel + 1) / 3; - if (nPower > 20) - nPower = 20; // * max of +20 bonus - int nDamagePower = DAMAGE_POWER_PLUS_ONE; - - switch (nPower) - { - case 1: nDamagePower = DAMAGE_POWER_PLUS_ONE; break; - case 2: nDamagePower = DAMAGE_POWER_PLUS_TWO; break; - case 3: nDamagePower = DAMAGE_POWER_PLUS_THREE; break; - case 4: nDamagePower = DAMAGE_POWER_PLUS_FOUR; break; - case 5: nDamagePower = DAMAGE_POWER_PLUS_FIVE; break; - case 6: nDamagePower = DAMAGE_POWER_PLUS_SIX; break; - case 7: nDamagePower = DAMAGE_POWER_PLUS_SEVEN; break; - case 8: nDamagePower = DAMAGE_POWER_PLUS_EIGHT; break; - case 9: nDamagePower = DAMAGE_POWER_PLUS_NINE; break; - case 10: nDamagePower = DAMAGE_POWER_PLUS_TEN; break; - case 11: nDamagePower = DAMAGE_POWER_PLUS_ELEVEN; break; - case 12: nDamagePower = DAMAGE_POWER_PLUS_TWELVE; break; - case 13: nDamagePower = DAMAGE_POWER_PLUS_THIRTEEN; break; - case 14: nDamagePower = DAMAGE_POWER_PLUS_FOURTEEN; break; - case 15: nDamagePower = DAMAGE_POWER_PLUS_FIFTEEN; break; - case 16: nDamagePower = DAMAGE_POWER_PLUS_SIXTEEN; break; - case 17: nDamagePower = DAMAGE_POWER_PLUS_SEVENTEEN; break; - case 18: nDamagePower = DAMAGE_POWER_PLUS_EIGHTEEN; break; - case 19: nDamagePower = DAMAGE_POWER_PLUS_NINTEEN; break; - case 20: nDamagePower = DAMAGE_POWER_PLUS_TWENTY; break; - } - //DoMagicFang(nPower, nDamagePower,nCasterLevel); - //PRCversion - object oTarget = PRCGetSpellTargetObject(); - //only works if you have nothing in right & left hands - if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget)) - || GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget))) - { - FloatingTextStrRefOnCreature(8962, OBJECT_SELF, FALSE); - return; // has neither an animal companion - } - //only works if target has monk levels - //or has a creature weapon - if(!GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oTarget)) - && !GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oTarget)) - && !GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oTarget)) - && !GetLevelByClass(CLASS_TYPE_MONK, oTarget)) - { - FloatingTextStrRefOnCreature(8962, OBJECT_SELF, FALSE); - return; // has neither an animal companion - } - - //remove other magic fang effects - PRCRemoveSpellEffects(452, OBJECT_SELF, oTarget); - PRCRemoveSpellEffects(453, OBJECT_SELF, oTarget); - effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID); - int nMetaMagic = PRCGetMetaMagicFeat(); - - effect eAttack = EffectAttackIncrease(nPower); - effect eDamage = EffectDamageIncrease(nPower); - effect eReduction = EffectDamageReduction(nPower, nDamagePower); // * doing this because - // * it creates a true - // * enhancement bonus - - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - effect eLink = EffectLinkEffects(eAttack, eDur); - eLink = EffectLinkEffects(eLink, eDamage); - eLink = EffectLinkEffects(eLink, eReduction); - - float fDuration = HoursToSeconds(nCasterLevel); // * Duration 1 hour/level - if ((nMetaMagic & METAMAGIC_EXTEND)) //Duration is +100% - { - fDuration = fDuration * 2.0; - } - - //Fire spell cast at event for target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, PRCGetSpellId(), FALSE)); - //Apply VFX impact and bonus effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration); - DelayCommand(1.0, CheckStillUnarmed(oTarget)); - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} diff --git a/_haks/poa_exp_spells/x0_s0_inferno.ncs b/_haks/poa_exp_spells/x0_s0_inferno.ncs deleted file mode 100644 index 039a5f8b..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_inferno.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_inferno.nss b/_haks/poa_exp_spells/x0_s0_inferno.nss deleted file mode 100644 index 52eb02bb..00000000 --- a/_haks/poa_exp_spells/x0_s0_inferno.nss +++ /dev/null @@ -1,146 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Inferno -//:: x0_s0_inferno.nss -//:: Copyright (c) 2000 Bioware Corp. -//::////////////////////////////////////////////// -/* - Does 2d6 fire per round - Duration: 1 round per level -*/ -//::////////////////////////////////////////////// -//:: Created By: Aidan Scanlan -//:: Created On: 01/09/01 -//::////////////////////////////////////////////// -//:: Rewritten: Georg Zoeller, 2003-Oct-19 -//:: - VFX update -//:: - Spell no longer stacks with itself -//:: - Spell can now be dispelled -//:: - Spell is now much less cpu expensive - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" -#include "prc_alterations" -#include "prc_add_spell_dc" - -void RunImpact(object oTarget, object oCaster, int nMetamagic,int EleDmg); - -void main() -{ - - DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); - SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION); - - - - object oTarget = PRCGetSpellTargetObject(); - - //-------------------------------------------------------------------------- - // Spellcast Hook Code - // Added 2003-06-20 by Georg - // If you want to make changes to all spells, check x2_inc_spellhook.nss to - // find out more - //-------------------------------------------------------------------------- - if (!X2PreSpellCastCode()) - { - return; - } - // End of Spell Cast Hook - - //-------------------------------------------------------------------------- - // This spell no longer stacks. If there is one of that type, thats ok - //-------------------------------------------------------------------------- - if (GetHasSpellEffect(GetSpellId(),oTarget) || GetHasSpellEffect(SPELL_COMBUST,oTarget)) - { - FloatingTextStrRefOnCreature(100775,OBJECT_SELF,FALSE); - return; - } - - //-------------------------------------------------------------------------- - // Calculate the duration - //-------------------------------------------------------------------------- - int nMetaMagic = PRCGetMetaMagicFeat(); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE); - - int nDuration = CasterLvl ; - int nPenetr = CasterLvl + SPGetPenetr(); - - if ((nMetaMagic & METAMAGIC_EXTEND)) - { - nDuration = nDuration * 2; - } - - if (nDuration < 1) - { - nDuration = 1; - } - - //-------------------------------------------------------------------------- - // Flamethrower VFX, thanks to Alex - //-------------------------------------------------------------------------- - effect eRay = EffectBeam(444,OBJECT_SELF,BODY_NODE_CHEST); - effect eDur = EffectVisualEffect(498); - - - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); - - float fDelay = GetDistanceBetween(oTarget, OBJECT_SELF)/13; - - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr)) - { - //---------------------------------------------------------------------- - // Engulf the target in flame - //---------------------------------------------------------------------- - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 3.0f,FALSE); - - - //---------------------------------------------------------------------- - // Apply the VFX that is used to track the spells duration - //---------------------------------------------------------------------- - DelayCommand(fDelay,SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eDur,oTarget,RoundsToSeconds(nDuration),FALSE)); - object oSelf = OBJECT_SELF; // because OBJECT_SELF is a function - DelayCommand(fDelay+0.1f,RunImpact(oTarget, oSelf,nMetaMagic,EleDmg)); - } - else - { - //---------------------------------------------------------------------- - // Indicate Failure - //---------------------------------------------------------------------- - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 2.0f,FALSE); - effect eSmoke = EffectVisualEffect(VFX_IMP_REFLEX_SAVE_THROW_USE); - DelayCommand(fDelay+0.3f,SPApplyEffectToObject(DURATION_TYPE_INSTANT,eSmoke,oTarget)); - } - -} - - -void RunImpact(object oTarget, object oCaster, int nMetaMagic,int EleDmg) -{ - //-------------------------------------------------------------------------- - // Check if the spell has expired (check also removes effects) - //-------------------------------------------------------------------------- - if (PRCGetDelayedSpellEffectsExpired(446,oTarget,oCaster)) - { - return; - } - - if (GetIsDead(oTarget) == FALSE) - { - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);// ou seria oCaster? - int nPenetr = CasterLvl + SPGetPenetr(); - //---------------------------------------------------------------------- - // Calculate Damage - //---------------------------------------------------------------------- - int nDamage = PRCMaximizeOrEmpower(nPenetr/2,2,nMetaMagic); //troquei o 6 por nPenetr/2 - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); - eDam = EffectLinkEffects(eVis,eDam); // flare up - SPApplyEffectToObject (DURATION_TYPE_INSTANT,eDam,oTarget); - DelayCommand(6.0f,RunImpact(oTarget,oCaster,nMetaMagic,EleDmg)); - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - diff --git a/_haks/poa_exp_spells/x0_s0_magicfang.ncs b/_haks/poa_exp_spells/x0_s0_magicfang.ncs deleted file mode 100644 index 5cc07088..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_magicfang.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_magicfang.nss b/_haks/poa_exp_spells/x0_s0_magicfang.nss deleted file mode 100644 index 13fae876..00000000 --- a/_haks/poa_exp_spells/x0_s0_magicfang.nss +++ /dev/null @@ -1,143 +0,0 @@ -/* - x0_s0_magicfang - - +1 enhancement bonus to attack and damage rolls. - Also applys damage reduction +1; this allows the creature - to strike creatures with +1 damage reduction. - - Checks to see if a valid summoned monster or animal companion - exists to apply the effects to. If none exists, then - the spell is wasted. - - By: Brent Knowles - Created: September 6, 2002 - Modified: Jun 29, 2006 - - Flaming_Sword: cleaned up, added greater magic fang -*/ - -#include "prc_sp_func" - - -void CheckStillUnarmed(object oTarget) -{ - //only works if you have nothing in right & left hands - if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget)) - || GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget))) - { - FloatingTextStrRefOnCreature(8962, oTarget, FALSE); - //remove other magic fang effects - PRCRemoveSpellEffects(452, OBJECT_SELF, oTarget); - PRCRemoveSpellEffects(453, OBJECT_SELF, oTarget); - return; // has neither an animal companion - } - DelayCommand(1.0, CheckStillUnarmed(oTarget)); -} - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nSpellID = PRCGetSpellId(); - int bNorm = (nSpellID == 452); - - int nPower = bNorm ? 1 : (nCasterLevel + 1) / 3; //magic fang - if (nPower > 20) - nPower = 20; // * max of +5 bonus - int nDamagePower; - - switch (nPower) - { - case 1: nDamagePower = DAMAGE_POWER_PLUS_ONE; break; - case 2: nDamagePower = DAMAGE_POWER_PLUS_TWO; break; - case 3: nDamagePower = DAMAGE_POWER_PLUS_THREE; break; - case 4: nDamagePower = DAMAGE_POWER_PLUS_FOUR; break; - case 5: nDamagePower = DAMAGE_POWER_PLUS_FIVE; break; - case 6: nDamagePower = DAMAGE_POWER_PLUS_SIX; break; - case 7: nDamagePower = DAMAGE_POWER_PLUS_SEVEN; break; - case 8: nDamagePower = DAMAGE_POWER_PLUS_EIGHT; break; - case 9: nDamagePower = DAMAGE_POWER_PLUS_NINE; break; - case 10: nDamagePower = DAMAGE_POWER_PLUS_TEN; break; - case 11: nDamagePower = DAMAGE_POWER_PLUS_ELEVEN; break; - case 12: nDamagePower = DAMAGE_POWER_PLUS_TWELVE; break; - case 13: nDamagePower = DAMAGE_POWER_PLUS_THIRTEEN; break; - case 14: nDamagePower = DAMAGE_POWER_PLUS_FOURTEEN; break; - case 15: nDamagePower = DAMAGE_POWER_PLUS_FIFTEEN; break; - case 16: nDamagePower = DAMAGE_POWER_PLUS_SIXTEEN; break; - case 17: nDamagePower = DAMAGE_POWER_PLUS_SEVENTEEN; break; - case 18: nDamagePower = DAMAGE_POWER_PLUS_EIGHTEEN; break; - case 19: nDamagePower = DAMAGE_POWER_PLUS_NINTEEN; break; - case 20: nDamagePower = DAMAGE_POWER_PLUS_TWENTY; break; - } - - if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget)) - || GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget))) - { - FloatingTextStrRefOnCreature(8962, OBJECT_SELF, FALSE); - return TRUE; // has neither an animal companion - } - //only works if target has monk levels - //or has a creature weapon - if(!GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oTarget)) - && !GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oTarget)) - && !GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oTarget)) - && !GetLevelByClass(CLASS_TYPE_MONK, oTarget)) - { - FloatingTextStrRefOnCreature(8962, OBJECT_SELF, FALSE); - return TRUE; // has neither an animal companion - } - - //remove other magic fang effects - PRCRemoveSpellEffects(452, OBJECT_SELF, oTarget); - PRCRemoveSpellEffects(453, OBJECT_SELF, oTarget); - int nMetaMagic = PRCGetMetaMagicFeat(); - - effect eLink = EffectLinkEffects(EffectAttackIncrease(nPower), EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); - eLink = EffectLinkEffects(eLink, EffectDamageIncrease(nPower)); - eLink = EffectLinkEffects(eLink, EffectDamageReduction(nPower, nDamagePower)); - - float fDuration = bNorm ? TurnsToSeconds(nCasterLevel) : HoursToSeconds(nCasterLevel); // * Duration 1 hour/level - if ((nMetaMagic & METAMAGIC_EXTEND)) //Duration is +100% - fDuration = fDuration * 2.0; - - //Fire spell cast at event for target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, PRCGetSpellId(), FALSE)); - //Apply VFX impact and bonus effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HOLY_AID), oTarget); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration); - DelayCommand(1.0, CheckStillUnarmed(oTarget)); - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x0_s0_missstorm1.ncs b/_haks/poa_exp_spells/x0_s0_missstorm1.ncs deleted file mode 100644 index 7034e292..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_missstorm1.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_missstorm1.nss b/_haks/poa_exp_spells/x0_s0_missstorm1.nss deleted file mode 100644 index 8dc74406..00000000 --- a/_haks/poa_exp_spells/x0_s0_missstorm1.nss +++ /dev/null @@ -1,50 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Isaacs Lesser Missile Storm -//:: x0_s0_MissStorm1 -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Up to 10 missiles, each doing 1d6 damage to all - targets in area. -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 31, 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "spinc_bolt" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ -int nClass = GetLevelByClass(CLASS_TYPE_FMM); - -int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - //SpawnScriptDebugger(); - PRCDoMissileStorm(1+(nCasterLvl/13), 10+(nClass/5)+(nCasterLvl/10), SPELL_ISAACS_LESSER_MISSILE_STORM); - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - - diff --git a/_haks/poa_exp_spells/x0_s0_missstorm2.ncs b/_haks/poa_exp_spells/x0_s0_missstorm2.ncs deleted file mode 100644 index 24e7ca69..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_missstorm2.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_missstorm2.nss b/_haks/poa_exp_spells/x0_s0_missstorm2.nss deleted file mode 100644 index 187d973e..00000000 --- a/_haks/poa_exp_spells/x0_s0_missstorm2.nss +++ /dev/null @@ -1,51 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Isaacs Greater Missile Storm -//:: x0_s0_MissStorm2 -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* - Up to 20 missiles, each doing 3d6 damage to each - target in area. -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 31, 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "spinc_bolt" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ -int nClass = GetLevelByClass(CLASS_TYPE_FMM); - -int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - - PRCDoMissileStorm(2+(nCasterLvl/12), 20+(nClass/5)+(nCasterLvl/10), SPELL_ISAACS_GREATER_MISSILE_STORM); - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - - diff --git a/_haks/poa_exp_spells/x0_s0_quillfire.ncs b/_haks/poa_exp_spells/x0_s0_quillfire.ncs deleted file mode 100644 index cbc88b79..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_quillfire.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_quillfire.nss b/_haks/poa_exp_spells/x0_s0_quillfire.nss deleted file mode 100644 index 6fd9d13d..00000000 --- a/_haks/poa_exp_spells/x0_s0_quillfire.nss +++ /dev/null @@ -1,102 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Quillfire -//:: [x0_s0_quillfire.nss] -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* - Fires a cluster of quills at a target. Ranged Attack. - 2d8 + 1 point /2 levels (max 5) - -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 17 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs May 02, 2003 - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - -#include "prc_alterations" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables ( fDist / (3.0f * log( fDist ) + 2.0f) ) - object oTarget = PRCGetSpellTargetObject(); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - int nCasterLvl = CasterLvl; - int nDamage = 0; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCnt; - effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_QUILLFIRE)); - //Apply a single damage hit for each missile instead of as a single mass - //Make SR Check - { - // BK: No spell resistance for quillfire - //if(!PRCDoResistSpell(OBJECT_SELF, oTarget, fDelay)) - { - //eMissile = EffectVisualEffect(VFX_IMP_MIRV_FLAME); - //Roll damage - int nDam = d8(1); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDam = 8;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDam = nDam + nDam/2; //Damage/Healing is +50% - } - //* apply bonus damage for level - int nBonus = nCasterLvl/ 2; - if (nBonus > 20) - { - nBonus = 20; - } - nDam = nDam + nBonus; - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0f,TRUE,-1,CasterLvl); - // * also applies poison damage - effect ePoison = EffectPoison(POISON_LARGE_SCORPION_VENOM); - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget,0.0f,TRUE,-1,CasterLvl); - - //Apply the MIRV and damage effect - //SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget); - } - - } - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - - - diff --git a/_haks/poa_exp_spells/x0_s0_shieldfait.ncs b/_haks/poa_exp_spells/x0_s0_shieldfait.ncs deleted file mode 100644 index 7e265f0f..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_shieldfait.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_shieldfait.nss b/_haks/poa_exp_spells/x0_s0_shieldfait.nss deleted file mode 100644 index dd5ba6f9..00000000 --- a/_haks/poa_exp_spells/x0_s0_shieldfait.nss +++ /dev/null @@ -1,63 +0,0 @@ -/* - x0_s0_shieldfait - - +2 deflection AC bonus, +1 every 6 levels (max +5) - Duration: 1 turn/level - - By: Brent Knowles - Created: Sep 6, 2002 - Modified: Jun 29, 2006 -*/ - -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nMetaMagic = PRCGetMetaMagicFeat(); - int nValue = 2 + (nCasterLevel)/6; - if(nValue > 20) - nValue = 20; // * Max of 5 - effect eLink = EffectLinkEffects(EffectACIncrease(nValue, AC_DEFLECTION_BONUS), EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR)); - int nDuration = nCasterLevel; // * Duration 1 turn/level - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) //Duration is +100% - nDuration *= 2; - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 421, FALSE)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_AC_BONUS), oTarget); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(nDuration),TRUE,-1,nCasterLevel); - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x0_s0_spikegroen.ncs b/_haks/poa_exp_spells/x0_s0_spikegroen.ncs deleted file mode 100644 index fa74f523..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_spikegroen.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_spikegroen.nss b/_haks/poa_exp_spells/x0_s0_spikegroen.nss deleted file mode 100644 index 00b67392..00000000 --- a/_haks/poa_exp_spells/x0_s0_spikegroen.nss +++ /dev/null @@ -1,81 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Spike Growth: On Enter -//:: x0_s0_spikegroEN.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - All creatures within the AoE take 1d4 acid damage - per round -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent Knowles -//:: Created On: September 6, 2002 -//::////////////////////////////////////////////// - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -//:://///////////////////////////////////////////// -//:: PRCDoSpikeGrowthEffect -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - 1d4 damage, plus a 24 hr slow if take damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: -//:: Created On: -//::////////////////////////////////////////////// - -void PRCDoSpikeGrowthEffect(object oTarget,int nPenetr) -{ - float fDelay = PRCGetRandomDelay(1.0, 2.2); - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the target - SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), 453)); - //Spell resistance check - if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr, fDelay)) - { - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDam = PRCMaximizeOrEmpower(20, 1, nMetaMagic); - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - - effect eDam = EffectDamage(nDam, DAMAGE_TYPE_PIERCING); - effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); - //effect eLink = eDam; - //Apply damage and visuals - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam/*eLink*/, oTarget)); - - // * only apply a slow effect from this spell once - if (GetHasSpellEffect(453, oTarget) == FALSE) - { - //Make a Reflex Save to avoid the effects of the movement hit. - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, PRCGetSaveDC(oTarget,GetAreaOfEffectCreator()), SAVING_THROW_ALL, GetAreaOfEffectCreator(), fDelay)) - { - effect eSpeed = EffectMovementSpeedDecrease(30); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpeed, oTarget, HoursToSeconds(24)); - } - } - } - } -} - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION); - - int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator()); - - - PRCDoSpikeGrowthEffect(GetEnteringObject(),nPenetr); - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school - -} diff --git a/_haks/poa_exp_spells/x0_s0_spikegrohb.ncs b/_haks/poa_exp_spells/x0_s0_spikegrohb.ncs deleted file mode 100644 index 4a7f6f27..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_spikegrohb.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_spikegrohb.nss b/_haks/poa_exp_spells/x0_s0_spikegrohb.nss deleted file mode 100644 index b7745f6f..00000000 --- a/_haks/poa_exp_spells/x0_s0_spikegrohb.nss +++ /dev/null @@ -1,88 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Spike Growth: On Heartbeat -//:: x0_s0_spikegroHB.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - All creatures within the AoE take 1d4 acid damage - per round -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent Knowles -//:: Created On: September 6, 2002 -//::////////////////////////////////////////////// - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -//:://///////////////////////////////////////////// -//:: PRCDoSpikeGrowthEffect -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - 1d4 damage, plus a 24 hr slow if take damage. -*/ -//::////////////////////////////////////////////// -//:: Created By: -//:: Created On: -//::////////////////////////////////////////////// - -void PRCDoSpikeGrowthEffect(object oTarget,int nPenetr) -{ - float fDelay = PRCGetRandomDelay(1.0, 2.2); - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) - { - //Fire cast spell at event for the target - SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), 453)); - //Spell resistance check - if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr, fDelay)) - { - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDam = PRCMaximizeOrEmpower(20, 1, nMetaMagic); - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - - effect eDam = EffectDamage(nDam, DAMAGE_TYPE_PIERCING); - effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); - //effect eLink = eDam; - //Apply damage and visuals - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam/*eLink*/, oTarget)); - - // * only apply a slow effect from this spell once - if (GetHasSpellEffect(453, oTarget) == FALSE) - { - //Make a Reflex Save to avoid the effects of the movement hit. - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, PRCGetSaveDC(oTarget,GetAreaOfEffectCreator()), SAVING_THROW_ALL, GetAreaOfEffectCreator(), fDelay)) - { - effect eSpeed = EffectMovementSpeedDecrease(30); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpeed, oTarget, HoursToSeconds(24)); - } - } - } - } -} - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION); - - int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator()); - - - object oTarget; - //Start cycling through the AOE Object for viable targets including doors and placable objects. - oTarget = GetFirstInPersistentObject(OBJECT_SELF); - while(GetIsObjectValid(oTarget)) - { - PRCDoSpikeGrowthEffect(oTarget,nPenetr); - //Get next target. - oTarget = GetNextInPersistentObject(OBJECT_SELF); - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} diff --git a/_haks/poa_exp_spells/x0_s0_sunburst.ncs b/_haks/poa_exp_spells/x0_s0_sunburst.ncs deleted file mode 100644 index 7a5414bc..00000000 Binary files a/_haks/poa_exp_spells/x0_s0_sunburst.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x0_s0_sunburst.nss b/_haks/poa_exp_spells/x0_s0_sunburst.nss deleted file mode 100644 index 8c9a4faf..00000000 --- a/_haks/poa_exp_spells/x0_s0_sunburst.nss +++ /dev/null @@ -1,169 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Sunburst -//:: X0_S0_Sunburst -//:: Copyright (c) 2002 Bioware Corp. -//::////////////////////////////////////////////// -/* -// Brilliant globe of heat -// All creatures in the globe are blinded and -// take 6d6 damage -// Undead creatures take 1d6 damage (max 25d6) -// The blindness is permanent unless cast to remove it -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 23 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs May 14, 2003 -//:: Notes: Changed damage to non-undead to 6d6 -//:: 2003-10-09: GZ Added Subrace check for vampire special case, bugfix - - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - - -#include "prc_add_spell_dc" - -float nSize = RADIUS_SIZE_COLOSSAL; - - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - object oCaster = OBJECT_SELF; - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - int nCasterLvl = CasterLvl; - int nMetaMagic = PRCGetMetaMagicFeat(); - int nDamage = 0; - float fDelay; - effect eExplode = EffectVisualEffect(VFX_IMP_SUNSTRIKE); - effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY); - effect eHitVis = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE); - effect eLOS = EffectVisualEffect(VFX_FNF_LOS_HOLY_30); - effect eDam; - //Get the spell target location as opposed to the spell target. - location lTarget = PRCGetSpellTargetLocation(); - //Limit Caster level for the purposes of damage - if (nCasterLvl > 60) - { - nCasterLvl = 60; - } - int nPenetr = CasterLvl + SPGetPenetr(); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLOS, PRCGetSpellTargetLocation()); - int bDoNotDoDamage = FALSE; - - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while (GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SUNBURST)); - //This visual effect is applied to the target object not the location as above. This visual effect - //represents the flame that erupts on the target not on the ground. - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHitVis, oTarget); - - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr, fDelay)) - { - if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - //Roll damage for each target - nDamage = PRCMaximizeOrEmpower(6, nPenetr, nMetaMagic); - } - else - { - nDamage = PRCMaximizeOrEmpower(6, nCasterLvl/2, nMetaMagic); - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - - // * if a vampire then destroy it - if (GetAppearanceType(oTarget) == APPEARANCE_TYPE_VAMPIRE_MALE || GetAppearanceType(oTarget) == APPEARANCE_TYPE_VAMPIRE_FEMALE || GetStringLowerCase(GetSubRace(oTarget)) == "vampire" ) - { - // SpeakString("I vampire"); - // * if reflex saving throw fails no blindness - if (!ReflexSave(oTarget, (nDC), SAVING_THROW_TYPE_SPELL)) - { - effect eDead = PRCEffectDamage(oTarget, GetCurrentHitPoints(oTarget)); - //SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oTarget); - - //Apply epicenter explosion on caster - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eExplode, oTarget); - - DelayCommand(0.5, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDead, oTarget)); - bDoNotDoDamage = TRUE; - } - } - if (bDoNotDoDamage == FALSE) - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF), SAVING_THROW_TYPE_SPELL); - - // * Do damage - if ((nDamage > 0) && (bDoNotDoDamage == FALSE)) - { - //Set the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL); - - // Apply effects to the currently selected target. - DelayCommand(0.01, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - - - - // * if reflex saving throw fails apply blindness - if (!ReflexSave(oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF), SAVING_THROW_TYPE_SPELL)) - { - effect eBlindness = EffectBlindness(); - SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBlindness, oTarget,0.0f,TRUE,-1,CasterLvl); - } - - } // nDamage > 0 - } - - //----------------------------------------------------------------- - // GZ: Bugfix, reenable damage for next object - //----------------------------------------------------------------- - bDoNotDoDamage = FALSE; - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE); - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school - -} - - - - - diff --git a/_haks/poa_exp_spells/x2_s0_acidbrth.ncs b/_haks/poa_exp_spells/x2_s0_acidbrth.ncs deleted file mode 100644 index a4eb96af..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_acidbrth.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_acidbrth.nss b/_haks/poa_exp_spells/x2_s0_acidbrth.nss deleted file mode 100644 index 7b726b73..00000000 --- a/_haks/poa_exp_spells/x2_s0_acidbrth.nss +++ /dev/null @@ -1,88 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Mestil's Acid Breath -//:: X2_S0_AcidBrth -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// You breathe forth a cone of acidic droplets. The -// cone inflicts 1d6 points of acid damage per caster -// level (maximum 10d6). -*/ -//::////////////////////////////////////////////// -//:: Created By: Andrew Nobbs -//:: Created On: Nov, 22 2002 -//::////////////////////////////////////////////// -//float SpellDelay (object oTarget, int nShape); -//:: modified by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTargetLocation = PRCGetSpellTargetLocation(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLevel + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_ACID); - int nSaveType = ChangedSaveType(EleDmg); - int nDamage; - float fDelay; - - //Limit Caster level for the purposes of damage. - if(nCasterLevel > 20) - nCasterLevel = 20; - - //Declare the spell shape, size and the location. Capture the first target object in the shape. - object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - //Cycle through the targets within the spell shape until an invalid object is captured. - while(GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster) && oTarget != oCaster) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_MESTILS_ACID_BREATH)); - //Get the distance between the target and caster to delay the application of effects - fDelay = GetDistanceBetween(oCaster, oTarget)/20.0; - //Make SR check, and appropriate saving throw(s). - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay)) - { - //Detemine damage - nDamage = d6(nCasterLevel); - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 6 * nCasterLevel;//Damage is at max - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% - // Acid Sheath adds +1 damage per die to acid descriptor spells - if (GetHasDescriptor(GetSpellId(), DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, oCaster)) - nDamage += nCasterLevel; - - int nDC = PRCGetSaveDC(oTarget, oCaster); - - //Adjust damage according to Reflex Save, Evasion or Improved Evasion - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, nSaveType); - - if(nDamage > 0) - { - // Apply effects to the currently selected target. - effect eAcid = PRCEffectDamage(oTarget, nDamage, EleDmg); - effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); - - //Apply delayed effects - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eAcid, oTarget)); - PRCBonusDamage(oTarget); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x2_s0_acidshth.ncs b/_haks/poa_exp_spells/x2_s0_acidshth.ncs deleted file mode 100644 index 07728b4d..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_acidshth.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_acidshth.nss b/_haks/poa_exp_spells/x2_s0_acidshth.nss deleted file mode 100644 index 43dffba4..00000000 --- a/_haks/poa_exp_spells/x2_s0_acidshth.nss +++ /dev/null @@ -1,78 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Mestil's Acid Sheath -//:: X2_S0_AcidShth -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - This spell creates an acid shield around your - person. Any creature striking you with its body - does normal damage, but at the same time the - attacker takes 1d6 points +2 points per caster - level of acid damage. Weapons with exceptional - reach do not endanger thier uses in this way. -*/ -//::////////////////////////////////////////////// -//:: Created By: Preston Watamaniuk -//:: Created On: Jan 7, 2002 -//:: 2003-07-07: Stacking Spell Pass, Georg Zoeller -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 for prc stuff - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); -/* - Spellcast Hook Code - Added 2003-07-07 by Georg Zoeller - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables - effect eVis = EffectVisualEffect(448); - int nDuration = PRCGetCasterLevel(OBJECT_SELF); - int nDamage = PRCMin(nDuration * 2, 40); - int nMetaMagic = PRCGetMetaMagicFeat(); - object oTarget = OBJECT_SELF; - effect eShield = EffectDamageShield(nDamage, 0, ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_ACID)); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - - //Link effects - effect eLink = EffectLinkEffects(eShield, eDur); - eLink = EffectLinkEffects(eLink, eVis); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE)); - - //Enter Metamagic conditions - if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) - { - nDuration = nDuration *2; //Duration is +100% - } - - // 2003-07-07: Stacking Spell Pass, Georg - PRCRemoveEffectsFromSpell(oTarget, GetSpellId()); - - //Apply the VFX impact and effects - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school - -} - diff --git a/_haks/poa_exp_spells/x2_s0_balllghtng.ncs b/_haks/poa_exp_spells/x2_s0_balllghtng.ncs deleted file mode 100644 index e87eed8e..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_balllghtng.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_balllghtng.nss b/_haks/poa_exp_spells/x2_s0_balllghtng.nss deleted file mode 100644 index c43a23cb..00000000 --- a/_haks/poa_exp_spells/x2_s0_balllghtng.nss +++ /dev/null @@ -1,45 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Isaacs Lesser Missile Storm -//:: x0_s0_MissStorm1 -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Up to 10 missiles, each doing 1d6 damage to all - targets in area. -*/ -//::////////////////////////////////////////////// -//:: Created By: Brent -//:: Created On: July 31, 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: - -//:: modified by mr_bumpkin Dec 4, 2003 for prc stuff -#include "spinc_bolt" -#include "prc_add_spell_dc" -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - /* - Spellcast Hook Code - Added 2003-06-20 by Georg - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - */ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - - // End of Spell Cast Hook - - //SpawnScriptDebugger(); 503 - PRCDoMissileStorm(1, 40, GetSpellId(), 503,VFX_IMP_LIGHTNING_S ,ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_ELECTRICAL)); - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school - -} diff --git a/_haks/poa_exp_spells/x2_s0_combust.ncs b/_haks/poa_exp_spells/x2_s0_combust.ncs deleted file mode 100644 index 1d752fdd..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_combust.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_combust.nss b/_haks/poa_exp_spells/x2_s0_combust.nss deleted file mode 100644 index cdc22878..00000000 --- a/_haks/poa_exp_spells/x2_s0_combust.nss +++ /dev/null @@ -1,145 +0,0 @@ -/* - x2_s0_combust - - The initial eruption of flame causes 2d6 fire damage +1 - point per caster level(maximum +10) - with no saving throw. - - Further, the creature must make - a Reflex save or catch fire taking a further 1d6 points - of damage. This will continue until the Reflex save is - made. - - There is an undocumented artificial limit of - 10 + casterlevel rounds on this spell to prevent - it from running indefinitly when used against - fire resistant creatures with bad saving throws - - By: Georg Zoeller - Created: 2003/09/05 - Modified: Jun 30, 2006 -*/ - -#include "prc_sp_func" -#include "x2_inc_toollib" -#include "prc_add_spell_dc" -void RunCombustImpact(object oTarget, object oCaster, int nLevel, int nMetaMagic,int EleDmg) -{ - if (PRCGetDelayedSpellEffectsExpired(SPELL_COMBUST,oTarget,oCaster)) return; - - if (GetIsDead(oTarget) == FALSE) - { - int nDC = GetLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (SPELL_COMBUST)); - if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_FIRE)) - { - int nDamageLimit = nLevel; - if (nDamageLimit > 20) nDamageLimit = 20; - int nDamage = nDamageLimit + d6(); - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = nDamageLimit + 6; - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage = nDamage + (nDamage/2); - } - - effect eDmg = PRCEffectDamage(oTarget, nDamage,EleDmg); - effect eVFX = EffectVisualEffect(VFX_IMP_FLAME_S); - - SPApplyEffectToObject(DURATION_TYPE_INSTANT,eDmg,oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT,eVFX,oTarget); - - DelayCommand(6.0f,RunCombustImpact(oTarget,oCaster, nLevel,nMetaMagic,EleDmg)); - } - else - { - DeleteLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (SPELL_COMBUST)); - GZPRCRemoveSpellEffects(SPELL_COMBUST, oTarget); - } - } -} - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nDC = (PRCGetSaveDC(oTarget,oCaster)); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE); - int nDamageLimit = nCasterLevel; - if (nDamageLimit > 20) - { - nDamageLimit = 20; - } - int nDamage = nDamageLimit + d6(2); - int nMetaMagic = PRCGetMetaMagicFeat(); - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDamage = nDamageLimit + 12;//Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDamage += nDamage / 2;//Damage/Healing is +50% - } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - int nDuration = 10 + nCasterLevel; - if (nDuration < 1) - { - nDuration = 10; - } - effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - effect eDur = EffectVisualEffect(498); - - if(!GetIsReactionTypeFriendly(oTarget)) - { - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_COMBUST)); - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterLevel+SPGetPenetr())) - { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - TLVFXPillar(VFX_IMP_FLAME_M, GetLocation(oTarget), 5, 0.1f,0.0f, 2.0f); - if (GetHasSpellEffect(GetSpellId(),oTarget) || GetHasSpellEffect(SPELL_INFERNO,oTarget) ) - { - FloatingTextStrRefOnCreature(100775,oCaster,FALSE); - return TRUE; - } - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oTarget, RoundsToSeconds(nDuration)); - SetLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (SPELL_COMBUST), nDC); - DelayCommand(6.0, RunCombustImpact(oTarget,oCaster,nCasterLevel, nMetaMagic,EleDmg)); - } - } - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - object oCaster = OBJECT_SELF; - int nCasterLevel = PRCGetCasterLevel(oCaster); - PRCSetSchool(GetSpellSchool(PRCGetSpellId())); - if (!X2PreSpellCastCode()) return; - object oTarget = PRCGetSpellTargetObject(); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x2_s0_crumble.ncs b/_haks/poa_exp_spells/x2_s0_crumble.ncs deleted file mode 100644 index d4fb98a6..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_crumble.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_crumble.nss b/_haks/poa_exp_spells/x2_s0_crumble.nss deleted file mode 100644 index 24895a8a..00000000 --- a/_haks/poa_exp_spells/x2_s0_crumble.nss +++ /dev/null @@ -1,123 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Crumble -//:: X2_S0_Crumble -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// This spell inflicts 1d6 points of damage per -// caster level to Constructs to a maximum of 15d6. -// This spell does not affect living creatures. -*/ -//::////////////////////////////////////////////// -//:: Created By: Georg Zoeller -//:: Created On: Oct 2003/ -//::////////////////////////////////////////////// -// -// 2/25/2004 - bleedingedge - Removed SR check per bioware 1.62 change. -// -//:: modified by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - -#include "prc_alterations" -#include "prc_add_spell_dc" - - -void DoCrumble (int nDam, object oCaster, object oTarget); - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION); - - /* - Spellcast Hook Code - Added 2003-07-07 by Georg Zoeller - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - - */ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - // End of Spell Cast Hook - - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLvl =PRCGetCasterLevel(oCaster); - int nType = GetObjectType(oTarget); - int nRacial = MyPRCGetRacialType(oTarget); - int nMetaMagic = PRCGetMetaMagicFeat(); - - //Minimum caster level of 1, maximum of 15. - if(nCasterLvl == 0) - { - nCasterLvl = 1; - } - else if (nCasterLvl > 40) - { - nCasterLvl = 40; - } - - SignalEvent(oTarget, EventSpellCastAt(oCaster, GetSpellId())); - effect eCrumb = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eCrumb, oTarget); - - if (nType != OBJECT_TYPE_CREATURE && nType != OBJECT_TYPE_PLACEABLE && nType != OBJECT_TYPE_DOOR ) - { - return; - } - - if (MyPRCGetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT && GetLevelByClass(CLASS_TYPE_CONSTRUCT,oTarget) == 0) - { - return; - } - - int nDam = d6(nCasterLvl); - - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDam = 6*nCasterLvl; - } - - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDam = nDam + nDam/2; - } - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - - if (nDam>0) - { - //---------------------------------------------------------------------- - // * Sever the tie between spellId and effect, allowing it to - // * bypass any magic resistance - //---------------------------------------------------------------------- - DelayCommand(0.1f,DoCrumble(nDam, oCaster, oTarget)); - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - -//------------------------------------------------------------------------------ -// This part is moved into a delayed function in order to alllow it to bypass -// Golem Spell Immunity. Magic works by rendering all effects applied -// from within a spellscript useless. Delaying the creation and application of -// an effect causes it to loose it's SpellId, making it possible to ignore -// Magic Immunity. Hacktastic! -//------------------------------------------------------------------------------ -void DoCrumble (int nDam, object oCaster, object oTarget) -{ - float fDist = GetDistanceBetween(oCaster, oTarget); - float fDelay = fDist/(3.0 * log(fDist) + 2.0); - effect eDam = PRCEffectDamage(oTarget, nDam, ChangedElementalDamage(oCaster, DAMAGE_TYPE_SONIC)); - effect eMissile = EffectVisualEffect(477); - effect eCrumb = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); - effect eVis = EffectVisualEffect(135); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eCrumb, oTarget); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - DelayCommand(0.5f, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget)); -} diff --git a/_haks/poa_exp_spells/x2_s0_cureother.ncs b/_haks/poa_exp_spells/x2_s0_cureother.ncs deleted file mode 100644 index d523f757..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_cureother.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_cureother.nss b/_haks/poa_exp_spells/x2_s0_cureother.nss deleted file mode 100644 index fc16a633..00000000 --- a/_haks/poa_exp_spells/x2_s0_cureother.nss +++ /dev/null @@ -1,135 +0,0 @@ -//:://///////////////////////////////////////////// -//:: x2_s0_cureother -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Cure Critical Wounds on Others - causes 5 points - of damage to the spell caster as well. -*/ -//::////////////////////////////////////////////// -//:: Created By: Keith Warner -//:: Created On: Jan 2/03 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 for prc stuff - -#include "prc_inc_sp_tch" -#include "prc_inc_function" -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); - - /* - Spellcast Hook Code - Added 2003-07-07 by Georg Zoeller - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - - */ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - - // End of Spell Cast Hook - - - //Declare major variables - object oTarget = PRCGetSpellTargetObject(); - int nHeal; - int nDamage = d8(4); - int nMetaMagic = PRCGetMetaMagicFeat(); - effect eVis = EffectVisualEffect(VFX_IMP_SUNSTRIKE); - effect eVis2 = EffectVisualEffect(VFX_IMP_SUPER_HEROISM); - effect eHeal, eDam; - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nExtraDamage = CasterLvl; // * figure out the bonus damage - if (nExtraDamage > 40) - { - nExtraDamage = 40; - } - // * if low or normal difficulty is treated as MAXIMIZED - if(GetIsPC(oTarget) && GetGameDifficulty() < GAME_DIFFICULTY_CORE_RULES) - { - nDamage = 32 + nExtraDamage; - } - else - { - nDamage = nDamage + nExtraDamage; - } - - CasterLvl +=SPGetPenetr(); - //Make metamagic checks - int iBlastFaith = BlastInfidelOrFaithHeal(OBJECT_SELF, oTarget, DAMAGE_TYPE_POSITIVE, TRUE); - if ((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith) - { - nDamage = 32 + nExtraDamage; - // * if low or normal difficulty then MAXMIZED is doubled. - if(GetIsPC(OBJECT_SELF) && GetGameDifficulty() < GAME_DIFFICULTY_CORE_RULES) - { - nDamage = nDamage + nExtraDamage; - } - } - if (nMetaMagic & METAMAGIC_EMPOWER) - { - nDamage = nDamage + (nDamage/2); - } - - - if (MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD - && !(GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)) - { - if (oTarget != OBJECT_SELF) - { - //Figure out the amount of damage to heal - nHeal = nDamage; - //Set the heal effect - eHeal = PRCEffectHeal(nHeal, oTarget); - //Apply heal effect and VFX impact - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); - - //Apply Damage Effect to the Caster - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, 5), OBJECT_SELF); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 31, FALSE)); - } - - } - //Check that the target is undead - else - { - int nTouch = PRCDoMeleeTouchAttack(oTarget);; - if (nTouch > 0) - { - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 31)); - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl)) - { - eDam = PRCEffectDamage(oTarget, nDamage,DAMAGE_TYPE_NEGATIVE); - //Apply the VFX impact and effects - DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - } - } - //Apply Damage Effect to the Caster - SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, 5), OBJECT_SELF); - } - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} - - - - diff --git a/_haks/poa_exp_spells/x2_s0_dtharm.ncs b/_haks/poa_exp_spells/x2_s0_dtharm.ncs deleted file mode 100644 index 3d090d95..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_dtharm.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_dtharm.nss b/_haks/poa_exp_spells/x2_s0_dtharm.nss deleted file mode 100644 index aa563e3e..00000000 --- a/_haks/poa_exp_spells/x2_s0_dtharm.nss +++ /dev/null @@ -1,54 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Death Armor -//:: X2_S0_DthArm -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - You are surrounded with a magical aura that injures - creatures that contact it. Any creature striking - you with its body or handheld weapon takes 1d4 points - of damage +1 point per 2 caster levels (maximum +5). -*/ -//::////////////////////////////////////////////// -//:: Created By: Andrew Nobbs -//:: Created On: Jan 6, 2003 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs, 02/06/2003 -//:: 2003-07-07: Stacking Spell Pass, Georg Zoeller - -//:: modified by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" -//#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - - int nDuration = PRCGetCasterLevel(oCaster); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nCasterLvl = nDuration/2; - if(nCasterLvl > 20) - nCasterLvl = 20; - - effect eLink = EffectDamageShield(nCasterLvl, DAMAGE_BONUS_1d4, DAMAGE_TYPE_MAGICAL); - eLink = EffectLinkEffects(eLink, EffectVisualEffect(463)); - - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_DEATH_ARMOR, FALSE)); - - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_EXTEND) - nDuration *= 2; - - //Stacking Spellpass, 2003-07-07, Georg - PRCRemoveEffectsFromSpell(oTarget, SPELL_DEATH_ARMOR); - - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); - - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x2_s0_elecloop.ncs b/_haks/poa_exp_spells/x2_s0_elecloop.ncs deleted file mode 100644 index d537a2a4..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_elecloop.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_elecloop.nss b/_haks/poa_exp_spells/x2_s0_elecloop.nss deleted file mode 100644 index 3523aff1..00000000 --- a/_haks/poa_exp_spells/x2_s0_elecloop.nss +++ /dev/null @@ -1,163 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Gedlee's Electric Loop -//:: X2_S0_ElecLoop -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - You create a small stroke of lightning that - cycles through all creatures in the area of effect. - The spell deals 1d6 points of damage per 2 caster - levels (maximum 5d6). Those who fail their Reflex - saves must succeed at a Will save or be stunned - for 1 round. - - Spell is standard hostile, so if you use it - in hardcore mode, it will zap yourself! - -*/ -//::////////////////////////////////////////////// -//:: Created By: Georg Zoeller -//:: Created On: Oct 19 2003 -//::////////////////////////////////////////////// - -//:: modified by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - - - -#include "prc_add_spell_dc" - - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); - - //-------------------------------------------------------------------------- - // Spellcast Hook Code - // Added 2003-06-20 by Georg - // If you want to make changes to all spells, check x2_inc_spellhook.nss to - // find out more - //-------------------------------------------------------------------------- - if (!X2PreSpellCastCode()) - { - return; - } - // End of Spell Cast Hook - - - location lTarget = PRCGetSpellTargetLocation(); - effect eStrike = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - int nMetaMagic = PRCGetMetaMagicFeat(); - float fDelay; - effect eBeam; - int nDamage; - int nPotential; - effect eDam; - object oLastValid; - effect eStun = EffectLinkEffects(EffectVisualEffect(VFX_IMP_STUN),EffectStunned()); - - //-------------------------------------------------------------------------- - // Calculate Damage Dice. 1d per 2 caster levels, max 5d - //-------------------------------------------------------------------------- - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - - - int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_ELECTRICAL); - - int nNumDice = CasterLvl/2; - if (nNumDice<1) - { - nNumDice = 1; - } - else if (nNumDice >20) - { - nNumDice = 20; - } - - CasterLvl +=SPGetPenetr(); - - //-------------------------------------------------------------------------- - // Loop through all targets - //-------------------------------------------------------------------------- - - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE); - while (GetIsObjectValid(oTarget)) - { - if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, PRCGetSpellId())); - - //------------------------------------------------------------------ - // Calculate delay until spell hits current target. If we are the - // first target, the delay is the time until the spell hits us - //------------------------------------------------------------------ - if (GetIsObjectValid(oLastValid)) - { - fDelay += 0.2f; - fDelay += GetDistanceBetweenLocations(GetLocation(oLastValid), GetLocation(oTarget))/20; - } - else - { - fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - } - - //------------------------------------------------------------------ - // If there was a previous target, draw a lightning beam between us - // and iterate delay so it appears that the beam is jumping from - // target to target - //------------------------------------------------------------------ - if (GetIsObjectValid(oLastValid)) - { - eBeam = EffectBeam(VFX_BEAM_LIGHTNING, oLastValid, BODY_NODE_CHEST); - DelayCommand(fDelay,SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam,oTarget,1.5f)); - } - - if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay)) - { - - int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); - nPotential = PRCMaximizeOrEmpower(6, nNumDice, nMetaMagic); - //nPotential += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - nDamage = PRCGetReflexAdjustedDamage(nPotential, oTarget, (nDC), SAVING_THROW_TYPE_ELECTRICITY); - - //-------------------------------------------------------------- - // If we failed the reflex save, we save vs will or are stunned - // for one round - //-------------------------------------------------------------- - if (nPotential == nDamage || (GetHasFeat(FEAT_IMPROVED_EVASION,oTarget) && nDamage == (nPotential/2))) - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (nDC), SAVING_THROW_TYPE_MIND_SPELLS, OBJECT_SELF, fDelay)) - { - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eStun,oTarget, RoundsToSeconds(1))); - } - - } - - - if (nDamage >0) - { - eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); - PRCBonusDamage(oTarget); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eStrike, oTarget)); - } - } - - //------------------------------------------------------------------ - // Store Target to make it appear that the lightning bolt is jumping - // from target to target - //------------------------------------------------------------------ - oLastValid = oTarget; - - } - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE ); - } - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school - -} - - diff --git a/_haks/poa_exp_spells/x2_s0_horiboom.ncs b/_haks/poa_exp_spells/x2_s0_horiboom.ncs deleted file mode 100644 index a6db6e82..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_horiboom.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_horiboom.nss b/_haks/poa_exp_spells/x2_s0_horiboom.nss deleted file mode 100644 index c368f6a2..00000000 --- a/_haks/poa_exp_spells/x2_s0_horiboom.nss +++ /dev/null @@ -1,115 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Horizikaul's Boom -//:: X2_S0_HoriBoom -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// You blast the target with loud and high-pitched -// sounds. The target takes 1d4 points of sonic -// damage per two caster levels (maximum 5d4) and -// must make a Will save or be deafened for 1d4 -// rounds. -*/ -//::////////////////////////////////////////////// -//:: Created By: Andrew Nobbs -//:: Created On: Nov 22, 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs, 02/06/2003 - - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" - - - -#include "prc_add_spell_dc" - -void main() -{ -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); -/* - Spellcast Hook Code - Added 2003-07-07 by Georg Zoeller - If you want to make changes to all spells, - check x2_inc_spellhook.nss to find out more - -*/ - - if (!X2PreSpellCastCode()) - { - // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell - return; - } - -// End of Spell Cast Hook - - - //Declare major variables ( fDist / (3.0f * log( fDist ) + 2.0f) ) - object oTarget = PRCGetSpellTargetObject(); - int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - - int nCasterLvl = CasterLvl/2; - int nRounds = d4(1); - int nMetaMagic = PRCGetMetaMagicFeat(); - effect eVis = EffectVisualEffect(VFX_IMP_SONIC); - effect eDeaf = EffectDeaf(); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); - effect eLink = EffectLinkEffects(eDeaf, eDur); - - //Minimum caster level of 1, maximum of 15. - if(nCasterLvl == 0) - { - nCasterLvl = 1; - } - else if (nCasterLvl > 20) - { - nCasterLvl = 20; - } - - CasterLvl +=SPGetPenetr(); - - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) - { - if(!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HORIZIKAULS_BOOM)); - //Roll damage - int nDam = d4(nCasterLvl); - //Enter Metamagic conditions - if ((nMetaMagic & METAMAGIC_MAXIMIZE)) - { - nDam = 4 * nCasterLvl; //Damage is at max - } - if ((nMetaMagic & METAMAGIC_EMPOWER)) - { - nDam = nDam + nDam/2; //Damage/Healing is +50% - } - if(nMetaMagic & METAMAGIC_EXTEND) - { - nRounds *= 2; - } - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); - //Set damage effect - effect eDam = PRCEffectDamage(oTarget, nDam, ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_SONIC)); - //Apply the MIRV and damage effect - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); - PRCBonusDamage(oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - - //Should not work on creatures already deafened or silenced - if(!PRCGetHasEffect(EFFECT_TYPE_DEAF, oTarget) && !PRCGetHasEffect(EFFECT_TYPE_SILENCE, oTarget)) - { - if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (PRCGetSaveDC(oTarget,OBJECT_SELF)), SAVING_THROW_TYPE_MIND_SPELLS)) - { - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDeaf, oTarget, RoundsToSeconds(nRounds)); - } - } - } - } - - -DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); -// Erasing the variable used to store the spell's spell school -} diff --git a/_haks/poa_exp_spells/x2_s0_icedagg.ncs b/_haks/poa_exp_spells/x2_s0_icedagg.ncs deleted file mode 100644 index cce7e0fb..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_icedagg.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_icedagg.nss b/_haks/poa_exp_spells/x2_s0_icedagg.nss deleted file mode 100644 index 774c68ba..00000000 --- a/_haks/poa_exp_spells/x2_s0_icedagg.nss +++ /dev/null @@ -1,74 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Ice Dagger -//:: X2_S0_IceDagg -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// You create a dagger shapped piece of ice that -// flies toward the target and deals 1d4 points of -// cold damage per level (maximum od 5d4) -*/ -//::////////////////////////////////////////////// -//:: Created By: Andrew Nobbs -//:: Created On: Nov 25 , 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs, 02/06/2003 -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_sp_tch" -#include "prc_add_spell_dc" - -void main() -{ - if (!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_CONJURATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - location lTarget = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLvl + SPGetPenetr(); - int nDice = PRCMin(nCasterLvl, 20); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_COLD); - int nSaveType = ChangedSaveType(EleDmg); - effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); - - if(!GetIsReactionTypeFriendly(oTarget)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_ICE_DAGGER)); - //Get the distance between the explosion and the target to calculate delay - float fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - - int iAttackRoll = PRCDoRangedTouchAttack(oTarget); - if(iAttackRoll > 0) - { - if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay)) - { - //Roll damage for each target - int nDamage = d4(nDice); - //Resolve metamagic - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 4 * nDice; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage += nDamage / 2; - - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget, oCaster)), nSaveType); - - if(nDamage) - { - //This visual effect is applied to the target object not the location as above. This visual effect - //represents the flame that erupts on the target not on the ground. - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - - ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDamage, EleDmg); - PRCBonusDamage(oTarget); - } - } - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x2_s0_magcvest.ncs b/_haks/poa_exp_spells/x2_s0_magcvest.ncs deleted file mode 100644 index bdde458c..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_magcvest.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_magcvest.nss b/_haks/poa_exp_spells/x2_s0_magcvest.nss deleted file mode 100644 index e8cae0d0..00000000 --- a/_haks/poa_exp_spells/x2_s0_magcvest.nss +++ /dev/null @@ -1,81 +0,0 @@ -/* - x2_s0_magcvest - - Grants a +1 AC bonus to armor touched per 3 caster - levels (maximum of +5). - - By: Andrew Nobbs - Created: Nov 28, 2002 - Modified: Jun 30, 2006 -*/ -#include "prc_sp_func" - -//Implements the spell impact, put code here -// if called in many places, return TRUE if -// stored charges should be decreased -// eg. touch attack hits -// -// Variables passed may be changed if necessary -int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) -{ - int nAmount = nCasterLevel/3; - if(nAmount < 1) - nAmount = 1; - else if(nAmount > 21) - nAmount = 21; - - float fDuration = HoursToSeconds(nCasterLevel); - int nMetaMagic = PRCGetMetaMagicFeat(); - if(nMetaMagic & METAMAGIC_EXTEND) - fDuration *= 2; //Duration is +100% - - effect eVis = EffectVisualEffect(VFX_IMP_GLOBE_USE); - effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - - object oMyArmor = IPGetTargetedOrEquippedArmor(TRUE); - if(GetIsObjectValid(oMyArmor)) - { - if(oTarget == oMyArmor) - oTarget = GetItemPossessor(oMyArmor); - - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_MAGIC_VESTMENT, FALSE)); - - DelayCommand(1.3f, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); - SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oTarget, fDuration); - IPSafeAddItemProperty(oMyArmor, ItemPropertyACBonus(nAmount), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE); - } - else - { - FloatingTextStrRefOnCreature(83826, oCaster, FALSE); - } - - return TRUE; //return TRUE if spell charges should be decremented -} - -void main() -{ - if (!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION); - object oCaster = OBJECT_SELF; - object oTarget = PRCGetSpellTargetObject(); - int nCasterLevel = PRCGetCasterLevel(oCaster); - int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags - if(!nEvent) //normal cast - { - if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget) - { //holding the charge, casting spell on self - SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges - return; - } - DoSpell(oCaster, oTarget, nCasterLevel, nEvent); - } - else - { - if(nEvent & PRC_SPELL_EVENT_ATTACK) - { - if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent)) - DecrementSpellCharges(oCaster); - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x2_s0_scntsphere.ncs b/_haks/poa_exp_spells/x2_s0_scntsphere.ncs deleted file mode 100644 index e65360fe..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_scntsphere.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_scntsphere.nss b/_haks/poa_exp_spells/x2_s0_scntsphere.nss deleted file mode 100644 index 242ca0c3..00000000 --- a/_haks/poa_exp_spells/x2_s0_scntsphere.nss +++ /dev/null @@ -1,93 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Scintillating Sphere -//:: X2_S0_ScntSphere -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -// A scintillating sphere is a burst of electricity -// that detonates with a low roar and inflicts 1d6 -// points of damage per caster level (maximum of 10d6) -// to all creatures within the area. Unattended objects -// also take damage. The explosion creates almost no pressure. -*/ -//::////////////////////////////////////////////// -//:: Created By: Andrew Nobbs -//:: Created On: Nov 25 , 2002 -//::////////////////////////////////////////////// -//:: Last Updated By: Andrew Nobbs, 02/06/2003 -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void ApplyDamage(object oTarget, effect eDamage) -{ - effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget); - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); - PRCBonusDamage(oTarget); -} - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = PRCGetSpellTargetLocation(); - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLvl + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_ELECTRICAL); - int nSaveType = ChangedSaveType(EleDmg); - int nDamage; - float fDelay; - effect eDam; - - //Limit Caster level for the purposes of damage - if (nCasterLvl > 20) - nCasterLvl = 20; - - //Apply the fireball explosion at the location captured above. - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_ELECTRIC_EXPLOSION), lTarget); - - //Cycle through the targets within the spell shape until an invalid object is captured. - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - while(GetIsObjectValid(oTarget)) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_SCINTILLATING_SPHERE)); - - if (!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay)) - { - //Roll damage for each target - nDamage = d6(nCasterLvl); - //Resolve metamagic - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nDamage = 6 * nCasterLvl; - if(nMetaMagic & METAMAGIC_EMPOWER) - nDamage += nDamage / 2; - - int nDC = PRCGetSaveDC(oTarget, oCaster); - //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. - nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, nSaveType); - - if(nDamage > 0) - { - //Get the distance between the explosion and the target to calculate delay - fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20; - //Set the damage effect - eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); - // Apply effects to the currently selected target. - DelayCommand(fDelay, ApplyDamage(oTarget, eDam)); - } - } - } - //Select the next target within the spell shape. - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x2_s0_tidebattle.ncs b/_haks/poa_exp_spells/x2_s0_tidebattle.ncs deleted file mode 100644 index 78c6a059..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_tidebattle.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_tidebattle.nss b/_haks/poa_exp_spells/x2_s0_tidebattle.nss deleted file mode 100644 index 90d84fed..00000000 --- a/_haks/poa_exp_spells/x2_s0_tidebattle.nss +++ /dev/null @@ -1,64 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Tide of Battle -//:: x2_s0_TideBattle -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Uses spell effect to cause d100 damage to - all enemies and friends around pc, including pc. - (Area effect always centered on PC) - Minimum 30 points of damage will be done to each target -*/ -//::////////////////////////////////////////////// -//:: Created By: Keith Warner -//:: Created On: Jan 2/03 -//::////////////////////////////////////////////// -//:: Updated by: Andrew Nobbs -//:: Updated on: March 28, 2003 -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff -#include "prc_inc_spells" -#include "prc_add_spell_dc" - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_EVOCATION); - - //Declare major variables - object oCaster = OBJECT_SELF; - location lTarget = GetLocation(oCaster); -int nCasterLvl = PRCGetCasterLevel(oCaster); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH_WARD); - effect eVis2 = EffectVisualEffect(VFX_FNF_METEOR_SWARM); - effect eDamage; - effect eLink; - int nDamage; - float fDelay; - - //Apply Spell Effects - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis2, lTarget); - - //ApplyDamage and Effects to all targets in area - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget); - while(GetIsObjectValid(oTarget)) - { - fDelay = PRCGetRandomDelay(); - //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oCaster, GetSpellId())); - nDamage = d100() + nCasterLvl; - if(nDamage < 60) - nDamage = 60; - - //Set damage type and amount - eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); - //Link visual and damage effects - eLink = EffectLinkEffects(eVis, eDamage); - //Apply effects to oTarget - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget)); - - //Get next target in shape - oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget); - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/poa_exp_spells/x2_s0_undeath.ncs b/_haks/poa_exp_spells/x2_s0_undeath.ncs deleted file mode 100644 index efb6eb83..00000000 Binary files a/_haks/poa_exp_spells/x2_s0_undeath.ncs and /dev/null differ diff --git a/_haks/poa_exp_spells/x2_s0_undeath.nss b/_haks/poa_exp_spells/x2_s0_undeath.nss deleted file mode 100644 index f7a2bbe8..00000000 --- a/_haks/poa_exp_spells/x2_s0_undeath.nss +++ /dev/null @@ -1,135 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Undeath to Death -//:: x2_s0_undeath.nss -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* -Necromancy -Level: Clr 6, Sor/Wiz 6 -Components: V, S, M/DF -Area: Several undead creatures within - a 40-ft.-radius burst -Saving Throw: Will negates - -This spell functions like circle of death, except -that it destroys undead creatures as noted above. - -Material Component -The powder of a crushed diamond worth at least 500 gp. -*/ -//::////////////////////////////////////////////// -//:: Created By: Georg Zoeller -//:: Created On: August 13,2003 -//::////////////////////////////////////////////// - -//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff - -#include "prc_inc_spells" -#include "prc_add_spell_dc" - - -//const int SRROR_CODE_5_FIX = 1; - -void DoUndeadToDeath(object oCreature, object oCaster, int nPenetr) -{ - SignalEvent(oCreature, EventSpellCastAt(oCaster, SPELL_UNDEATH_TO_DEATH)); - - SetLocalInt(oCreature,"X2_EBLIGHT_I_AM_DEAD", TRUE); - - int nSaveDC = PRCGetSaveDC(oCreature, oCaster); - if(!PRCMySavingThrow(SAVING_THROW_WILL, oCreature, nSaveDC, SAVING_THROW_TYPE_NONE, oCaster)) - { - float fDelay = PRCGetRandomDelay(0.2f,0.4f); - if(!PRCDoResistSpell(oCaster, oCreature, nPenetr, fDelay)) - { - effect eDeath = PRCEffectDamage(oCreature, GetCurrentHitPoints(oCreature), DAMAGE_TYPE_DIVINE, DAMAGE_POWER_ENERGY); - effect eVis = EffectVisualEffect(VFX_IMP_DEATH); - DelayCommand(fDelay+0.5f, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oCreature)); - DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCreature)); - } - else - { - DelayCommand(1.0f, DeleteLocalInt(oCreature,"X2_EBLIGHT_I_AM_DEAD")); - } - } - else - { - DelayCommand(1.0f, DeleteLocalInt(oCreature,"X2_EBLIGHT_I_AM_DEAD")); - } -} - -void main() -{ - if(!X2PreSpellCastCode()) return; - - PRCSetSchool(SPELL_SCHOOL_NECROMANCY); - - // calculation - object oCaster = OBJECT_SELF; - int nCasterLvl = PRCGetCasterLevel(oCaster); - int nPenetr = nCasterLvl + SPGetPenetr(); - int nMetaMagic = PRCGetMetaMagicFeat(); - int nLevel = nCasterLvl > 40 ? 40 : nCasterLvl; - - // calculate number of hitdice affected - int nHDLeft = d4(nLevel); - //Enter Metamagic conditions - if(nMetaMagic & METAMAGIC_MAXIMIZE) - nHDLeft = 4 * nLevel;//Damage is at max - if(nMetaMagic & METAMAGIC_EMPOWER) - nHDLeft += (nHDLeft/2); //Damage/Healing is +50% - - // Impact VFX - location lLoc = PRCGetSpellTargetLocation(); - ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_STRIKE_HOLY),lLoc); - //TLVFXPillar(VFX_FNF_LOS_HOLY_20, lLoc, 3, 0.0f); - - // build list with affected creatures - int nLow = 9999; - object oLow; - int nCurHD; - object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 20.0f, lLoc); - while(GetIsObjectValid(oTarget) && nHDLeft > 0) - { - if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) - { - nCurHD = GetHitDice(oTarget); - if (nCurHD <= nHDLeft) - { - if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)) - { - // ignore creatures already affected - if(GetLocalInt(oTarget,"X2_EBLIGHT_I_AM_DEAD") == 0 && !GetPlotFlag(oTarget) && !GetIsDead(oTarget)) - { - // store the creature with the lowest HD - if(GetHitDice(oTarget) <= nLow) - { - nLow = GetHitDice(oTarget); - oLow = oTarget; - } - } - } - } - } - // Get next target - oTarget = MyNextObjectInShape(SHAPE_SPHERE, 20.0f ,lLoc); - - // End of cycle, time to kill the lowest creature - if(!GetIsObjectValid(oTarget)) - { - // we have a valid lowest creature we can affect with the remaining HD - if (GetIsObjectValid(oLow) && nHDLeft >= nLow) - { - DoUndeadToDeath(oLow, oCaster, nPenetr); - // decrement remaining HD - nHDLeft -= nLow; - // restart the loop - oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 20.0f, lLoc); - } - // reset counters - oLow = OBJECT_INVALID; - nLow = 9999; - } - } - PRCSetSchool(); -} \ No newline at end of file diff --git a/_haks/uw2_prc8_top/classes.2da b/_haks/uw2_prc8_top/classes.2da index 35c26716..7bfee2bb 100644 --- a/_haks/uw2_prc8_top/classes.2da +++ b/_haks/uw2_prc8_top/classes.2da @@ -1,258 +1,258 @@ 2DA V2.0 - Label Short Name Plural Lower Description Icon HitDie AttackBonusTable FeatsTable SavingThrowTable SkillsTable BonusFeatsTable SkillPointBase SpellGainTable SpellKnownTable PlayerClass SpellCaster Str Dex Con Wis Int Cha PrimaryAbil AlignRestrict AlignRstrctType InvertRestrict Constant EffCRLvl01 EffCRLvl02 EffCRLvl03 EffCRLvl04 EffCRLvl05 EffCRLvl06 EffCRLvl07 EffCRLvl08 EffCRLvl09 EffCRLvl10 EffCRLvl11 EffCRLvl12 EffCRLvl13 EffCRLvl14 EffCRLvl15 EffCRLvl16 EffCRLvl17 EffCRLvl18 EffCRLvl19 EffCRLvl20 PreReqTable MaxLevel XPPenalty ArcSpellLvlMod DivSpellLvlMod EpicLevel Package CastType StatGainTable MemorizesSpells SpellbookRestricted PickDomains PickSchool LearnScroll Arcane ASF SpellcastingAbil SpellTableColumn CLMultiplier MinCastingLevel MinAssociateLevel CanCastSpontaneously SkipSpellSelection -0 Barbarian 112187 5213 1 4890 240 IR_BARBARIN 12 CLS_ATK_1 CLS_FEAT_BARB CLS_SAVTHR_BARB CLS_SKILL_BARB CLS_BFEAT_BARB 4 **** **** 1 0 16 15 14 10 10 10 STR 0X02 0X1 0 CLASS_TYPE_BARBARIAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BARB 0 1 0 0 -1 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -1 Bard 112188 2 3 4891 241 IR_BARD 6 CLS_ATK_2 CLS_FEAT_BARD CLS_SAVTHR_BARD CLS_SKILL_BARD CLS_BFEAT_BARD 6 CLS_SPGN_BARD CLS_SPKN_BARD 1 1 12 14 14 10 12 15 CHA 0X02 0X1 0 CLASS_TYPE_BARD 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_BARD 0 1 0 0 -1 1 131 **** 0 1 0 0 0 1 1 CHA Bard 1 1 255 0 0 -2 Cleric 112189 4 5 4892 242 IR_CLERIC 8 CLS_ATK_2 CLS_FEAT_CLER CLS_SAVTHR_CLER CLS_SKILL_CLER CLS_BFEAT_CLER 2 CLS_SPGN_CLER **** 1 1 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_CLERIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CLER 0 1 0 0 -1 2 8 **** 1 0 1 0 0 0 0 WIS Cleric 1 1 255 1 0 -3 Druid 112190 6 7 4893 243 IR_DRUID 8 CLS_ATK_2 CLS_FEAT_DRUID CLS_SAVTHR_DRU CLS_SKILL_DRU CLS_BFEAT_DRU 4 CLS_SPGN_DRU **** 1 1 14 13 13 16 10 10 WIS 0X01 0X3 1 CLASS_TYPE_DRUID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRU 0 1 0 0 -1 3 0 **** 1 0 0 0 0 0 0 WIS Druid 1 1 1 0 0 -4 Fighter 112191 8 9 4894 244 IR_FIGHTER 10 CLS_ATK_1 CLS_FEAT_FIGHT CLS_SAVTHR_FIGHT CLS_SKILL_FIGHT CLS_BFEAT_FIGHT 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_FIGHTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FIGHT 0 1 0 0 -1 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -5 Monk 112192 10 11 4895 245 IR_MONK 8 CLS_ATK_2 CLS_FEAT_MONK CLS_SAVTHR_MONK CLS_SKILL_MONK CLS_BFEAT_MONK 4 **** **** 1 0 14 14 14 15 10 10 DEX 0X05 0X1 0 CLASS_TYPE_MONK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MONK 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -6 Paladin 112193 12 13 4896 246 IR_PALADIN 10 CLS_ATK_1 CLS_FEAT_PAL CLS_SAVTHR_PAL CLS_SKILL_PAL CLS_BFEAT_PAL 2 CLS_SPGN_PAL **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_PALADIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PAL 0 1 0 0 -1 6 0 **** 1 0 0 0 0 0 0 WIS Paladin 1 4 255 0 0 -7 Ranger 112194 14 15 4897 247 IR_RANGER 10 CLS_ATK_1 CLS_FEAT_RANG CLS_SAVTHR_RANG CLS_SKILL_RANG CLS_BFEAT_RANG 4 CLS_SPGN_RANG **** 1 1 14 16 13 13 10 10 WIS 0X00 0X0 0 CLASS_TYPE_RANGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RANG 0 1 0 0 -1 7 0 **** 1 0 0 0 0 0 0 WIS Ranger 1 4 6 0 0 -8 Rogue 112195 16 17 4898 248 IR_ROGUE 6 CLS_ATK_2 CLS_FEAT_ROG CLS_SAVTHR_ROG CLS_SKILL_ROG CLS_BFEAT_ROG 8 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ROGUE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ROG 0 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -9 Sorcerer 112196 18 19 4899 249 IR_SORCERER 4 CLS_ATK_3 CLS_FEAT_SORC CLS_SAVTHR_SORC CLS_SKILL_SORC CLS_BFEAT_SORC 2 CLS_SPGN_SORC CLS_SPKN_SORC 1 1 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SORCERER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SORC 0 1 0 0 -1 9 131 **** 0 1 0 0 0 1 1 CHA Wiz_Sorc 1 1 1 0 0 -10 Wizard 112197 20 21 4900 250 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_WIZ CLS_SAVTHR_WIZ CLS_SKILL_WIZ CLS_BFEAT_WIZ 2 CLS_SPGN_WIZ **** 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_WIZARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WIZ 0 1 0 0 -1 10 209 **** 1 1 0 1 1 1 1 INT Wiz_Sorc 1 1 1 0 0 -11 Aberration 112198 525 525 4901 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_ABER CLS_SAVTHR_WIZ CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 14 14 11 14 3 5 STR 0X00 0X0 0 CLASS_TYPE_ABERRATION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ABER 0 0 0 0 -1 73 0 **** **** **** **** **** **** **** **** **** Aberration **** **** **** **** **** -12 Animal 112199 526 526 4902 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 13 17 15 12 2 6 STR 0X00 0X0 0 CLASS_TYPE_ANIMAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ANI 0 0 0 0 -1 74 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -13 Construct 112200 528 528 4903 8154 IR_WIZARD 10 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_CONS CLS_SKILL_CREA CLS_BFEAT_BARB 0 **** **** 1 0 21 9 10 11 10 3 STR 0X00 0X0 0 CLASS_TYPE_CONSTRUCT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CON 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -14 Humanoid 112201 1763 1764 4904 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 6 **** **** 1 0 15 10 13 11 8 8 STR 0X00 0X0 0 CLASS_TYPE_HUMANOID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HUM 0 0 0 0 -1 76 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -15 Monstrous 112202 536 536 4905 8154 IR_WIZARD 8 CLS_ATK_1 CLS_FEAT_MONHUM CLS_SAVTHR_BARD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 19 10 15 10 7 8 STR 0X00 0X0 0 CLASS_TYPE_MONSTEROUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MON 0 0 0 0 -1 77 0 **** **** **** **** **** **** **** **** **** Monstrous **** **** **** **** **** -16 Elemental 112203 539 539 4906 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 17 8 13 11 4 11 STR 0X00 0X0 0 CLASS_TYPE_ELEMENTAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ELE 0 0 0 0 -1 78 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -17 Fey 112204 540 540 4907 8154 IR_WIZARD 6 CLS_ATK_3 CLS_FEAT_FEY CLS_SAVTHR_BARD CLS_SKILL_FEY CLS_BFEAT_BARB 6 **** **** 1 0 10 15 11 15 14 18 DEX 0X00 0X0 0 CLASS_TYPE_FEY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FEY 0 0 0 0 -1 79 0 **** **** **** **** **** **** **** **** **** Fey **** **** **** **** **** -18 Dragon 112205 529 529 4908 8154 IR_DRGNFIREADPT 12 CLS_ATK_1 CLS_FEAT_DRAG CLS_SAVTHR_MONK CLS_SKILL_DRAGON CLS_BFEAT_BARB 6 **** **** 1 0 13 10 13 10 11 10 STR 0X00 0X0 0 CLASS_TYPE_DRAGON 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRAG 0 0 0 0 -1 80 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -19 Undead 112206 547 547 4909 8154 IR_WIZARD 12 CLS_ATK_3 CLS_FEAT_CREA CLS_SAVTHR_WIZ CLS_SKILL_CREA CLS_BFEAT_BARB 4 **** **** 1 0 10 12 10 10 10 11 STR 0X00 0X0 0 CLASS_TYPE_UNDEAD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UNDEAD 0 0 0 0 -1 81 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -20 Commoner 112207 2291 2292 4910 8155 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_COMM CLS_SAVTHR_CONS CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 10 10 12 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_COMMONER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 **** 0 0 0 0 -1 82 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -21 Beast 112208 527 527 4911 8154 IR_WIZARD 10 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 16 13 16 3 12 8 STR 0X00 0X0 0 CLASS_TYPE_BEAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEAST 0 0 0 0 -1 83 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -22 Giant 112209 541 541 4912 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_GIAN CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 25 8 19 10 6 17 STR 0X00 0X0 0 CLASS_TYPE_GIANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_GIANT 0 0 0 0 -1 84 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -23 MagicBeast 112210 542 542 4913 8154 IR_WIZARD 10 CLS_ATK_1 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 15 8 15 12 2 10 STR 0X00 0X0 0 CLASS_TYPE_MAGICAL_BEAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAGBST 0 0 0 0 -1 85 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -24 Outsider 112211 4812 4812 4914 8154 IR_WIZARD 8 CLS_ATK_1 CLS_FEAT_OUTS CLS_SAVTHR_MONK CLS_SKILL_OUTS CLS_BFEAT_BARB 8 **** **** 1 0 15 10 13 13 10 12 STR 0X00 0X0 0 CLASS_TYPE_OUTSIDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OUTS 0 0 0 0 -1 86 0 **** **** **** **** **** **** **** **** **** Outsider **** **** **** **** **** -25 Shapechanger 112212 546 546 4915 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_SHCHNG CLS_SAVTHR_MONK CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 15 11 17 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SHAPECHANGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHAPE 0 0 0 0 -1 87 0 **** **** **** **** **** **** **** **** **** Shapechanger **** **** **** **** **** -26 Vermin 112213 548 548 4916 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 11 17 12 10 10 3 STR 0X00 0X0 0 CLASS_TYPE_VERMIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VERMIN 0 0 0 0 -1 88 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -27 Shadowdancer 112214 2944 2945 2946 2947 IR_X1_SHADOW 8 CLS_ATK_2 CLS_FEAT_SHADOW CLS_SAVTHR_ROG CLS_SKILL_SHADOW CLS_BFEAT_SHADOW 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWDANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHADOW 40 0 0 0 10 63 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -28 Harper 112215 2956 2957 2958 2959 IR_X1_HARPER 6 CLS_ATK_2 CLS_FEAT_HARPER CLS_SAVTHR_BARD CLS_SKILL_HARPER CLS_BFEAT_HARPER 4 CLS_SPGN_HARPER CLS_SPKN_HARPER 1 1 12 16 14 8 14 12 DEX 0X10 0X2 0 CLASS_TYPE_HARPER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HARPER 5 0 0 0 5 64 130 **** **** **** **** **** **** **** **** **** Harper **** **** **** **** **** -29 Arcane_Archer 112216 9003 9004 9005 9006 IR_ARCHER 8 CLS_ATK_1 CLS_FEAT_ARCHER CLS_SAVTHR_WILD CLS_SKILL_ARCHER CLS_BFEAT_ARCHER 4 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ARCANE_ARCHER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCHER 50 0 0 0 10 65 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -30 Assassin 112217 9007 9008 9009 16790386 IR_ASASIN 6 CLS_ATK_2 CLS_FEAT_ASASIN CLS_SAVTHR_ROG CLS_SKILL_ASASIN CLS_BFEAT_ASASIN 4 CLS_SPGN_ASASIN **** 1 1 12 16 14 8 14 12 DEX 0X09 0X2 0 CLASS_TYPE_ASSASSIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ASASIN 40 0 0 0 10 66 131 **** 1 1 0 0 1 1 1 INT Assassin 1 1 255 0 0 -31 Blackguard 112218 9011 9012 9013 16790387 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_BLKGRD CLS_SAVTHR_FIGHT CLS_SKILL_BLKGRD CLS_BFEAT_BLKGRD 2 CLS_SPGN_BLKGRD **** 1 1 12 16 14 8 14 12 CON 0X09 0X2 0 CLASS_TYPE_BLACKGUARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLKGRD 50 0 0 0 10 67 0 **** 1 0 0 0 0 0 0 WIS Blackguard 1 1 255 0 0 -32 Champion_Torm 112219 9015 9016 9017 9018 IR_DIVCHA 10 CLS_ATK_1 CLS_FEAT_DIVCHA CLS_SAVTHR_WILD CLS_SKILL_DIVCHA CLS_BFEAT_DIVCHA 2 **** **** 1 0 12 16 14 8 14 12 CHA 0X10 0X2 0 CLASS_TYPE_DIVINE_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIVCHA 50 0 0 0 10 109 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -33 WeaponMaster 112220 9019 9019 9021 9022 IR_WM 10 CLS_ATK_1 CLS_FEAT_WM CLS_SAVTHR_ROG CLS_SKILL_WM CLS_BFEAT_WM 2 **** **** 1 0 12 16 14 8 14 12 STR 0X00 0X0 0 CLASS_TYPE_WEAPON_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WM 50 0 0 0 10 112 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -34 Pale_Master 112221 9020 9023 9024 16834511 IR_PALEMA 6 CLS_ATK_3 CLS_FEAT_PALEMA CLS_SAVTHR_DRU CLS_SKILL_PALEMA CLS_BFEAT_PALEMA 2 **** **** 1 0 12 16 14 8 14 12 INT 0X08 0X2 0 CLASS_TYPE_PALE_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PALEMA 50 0 2 0 10 110 0 cls_stat_palema **** **** **** **** **** **** **** **** **** **** **** **** **** **** -35 Shifter 112222 9026 9027 9028 9029 IR_SHIFTR 8 CLS_ATK_2 CLS_FEAT_SHIFTR CLS_SAVTHR_WILD CLS_SKILL_SHIFTR CLS_BFEAT_SHIFTR 4 **** **** 1 0 12 16 14 8 14 12 WIS 0X00 0X0 0 CLASS_TYPE_SHIFTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHIFTR 50 0 0 0 10 108 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -36 Dwarven_Defender 112223 76418 76419 76420 76422 IR_DWDEF 12 CLS_ATK_1 CLS_FEAT_DWDEF CLS_SAVTHR_CLER CLS_SKILL_DWDEF CLS_BFEAT_DWDEF 2 **** **** 1 0 16 8 15 14 10 12 STR 0X05 0X1 0 CLASS_TYPE_DWARVEN_DEFENDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DWDEF 50 0 0 0 10 89 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -37 Dragon_Disciple 112224 16832127 16832128 16832129 16832130 IR_DRAGOND 6 CLS_ATK_2 CLS_FEAT_DRADIS CLS_SAVTHR_CLER CLS_SKILL_DRADIS CLS_BFEAT_DRADIS 2 **** **** 1 0 14 8 14 16 10 14 STR 0X00 0X0 0 CLASS_TYPE_DRAGON_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRADIS 50 0 0 0 10 111 0 cls_stat_dradis **** **** **** **** **** **** **** **** **** **** **** **** **** **** -38 Ooze 112225 84438 84438 84437 8154 IR_CLERIC 10 CLS_ATK_2 CLS_FEAT_CLER CLS_SAVTHR_CLER CLS_SKILL_CLER CLS_BFEAT_CLER 0 **** **** 0 0 14 8 14 16 10 14 STR 0X00 0X0 0 CLASS_TYPE_OOZE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOZE 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -39 Eye_of_Gruumsh 16790665 16824294 16824295 16824296 16824297 IR_GRUUMSH 12 CLS_ATK_1 CLS_FEAT_EOG CLS_SAVTHR_BARB CLS_SKILL_EOG CLS_BFEAT_EOG 2 **** **** 1 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_PRC_EYE_OF_GRUUMSH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EOG 50 0 0 0 10 17 0 cls_stat_eog **** **** **** **** **** **** **** **** **** **** **** **** **** **** -40 Shou_Disciple 16790649 16823346 16823347 16823348 16823349 IR_SHOUDISC 10 CLS_ATK_1 CLS_FEAT_SHOU CLS_SAVTHR_WILD CLS_SKILL_SHOU CLS_BFEAT_SHOU 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_SHOU 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHOU 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -41 Purple_Dragon_Knight 112226 111710 111711 111712 111713 IR_PDK 10 CLS_ATK_1 CLS_FEAT_PDK CLS_SAVTHR_FIGHT CLS_SKILL_PDK CLS_BFEAT_PDK 2 **** **** 1 0 12 16 14 8 14 12 STR 0X14 0X3 0 CLASS_TYPE_PDK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PDK 5 0 0 0 5 131 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -42 UrPriest 16790529 16835606 16835607 16835608 16835609 IR_WARLOCK 8 CLS_ATK_2 CLS_FEAT_URPRST CLS_SAVTHR_WIZ CLS_SKILL_URPRST CLS_BFEAT_URPRST 2 CLS_SPGN_BLIGHT **** 1 1 15 9 14 13 10 15 WIS 0X09 0X2 0 CLASS_TYPE_UR_PRIEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_URPRST 50 0 0 0 10 10 0 **** 1 0 0 0 0 0 0 WIS Cleric 1 1 255 0 0 -43 Binder 16790530 16835216 16835217 16835218 16835219 IR_HFWRLK 8 CLS_ATK_2 CLS_FEAT_BINDER CLS_SAVTHR_CLER CLS_SKILL_BINDER CLS_BFEAT_BINDER 2 **** **** 1 0 15 12 14 10 15 10 STR 0X00 0X0 0 CLASS_TYPE_BINDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BINDER 20 1 0 0 -1 5 131 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -44 AnimaMage 16790531 16835425 16835426 16835427 16835428 IR_MAESTER 4 CLS_ATK_3 CLS_FEAT_ANIMA CLS_SAVTHR_WIZ CLS_SKILL_ANIMA CLS_BFEAT_ANIMA 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X08 0X2 0 CLASS_TYPE_ANIMA_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ANIMA 50 0 1 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -45 KnightOfTheSacredSeal 16790532 16835453 16835454 16835455 16835456 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_KSS CLS_SAVTHR_FIGHT CLS_SKILL_KSS CLS_BFEAT_KSS 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X04 0X1 0 CLASS_TYPE_KNIGHT_SACRED_SEAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KSS 5 0 0 0 5 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -46 ScionOfDantalion 16790533 16835519 16835520 16835521 16835522 IR_CEREBRE 8 CLS_ATK_2 CLS_FEAT_SCION CLS_SAVTHR_CLER CLS_SKILL_SCION CLS_BFEAT_BLANK 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X00 0X0 0 CLASS_TYPE_SCION_DANTALION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCION 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -47 TenebrousApostate 16790534 16835441 16835442 16835443 16835444 IR_SHADADEPT 8 CLS_ATK_2 CLS_FEAT_TENEB CLS_SAVTHR_CLER CLS_SKILL_TENEB CLS_BFEAT_TENEB 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X08 0X2 0 CLASS_TYPE_TENEBROUS_APOSTATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TENEB 5 0 0 1 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -48 ReapingMauler 16790535 16834902 16834903 16834904 16834905 IR_MONK 10 CLS_ATK_1 CLS_FEAT_RPMLR CLS_SAVTHR_RANG CLS_SKILL_RPMLR CLS_BFEAT_RPMLR 2 **** **** 1 0 16 15 14 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_REAPING_MAULER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RPMLR 5 0 0 0 5 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -49 SereneGuardian 16790536 16834537 16834538 16834539 16834540 IR_REDAVNG 8 CLS_ATK_1 CLS_FEAT_SERGRD CLS_SAVTHR_RANG CLS_SKILL_SERGRD CLS_BFEAT_SERGRD 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X02 0X1 1 CLASS_TYPE_SERENE_GUARDIAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SERGRD 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -50 SacredPurifer 16790537 16834528 16834529 16834530 16834531 IR_MAA 8 CLS_ATK_2 CLS_FEAT_SACPUR CLS_SAVTHR_CLER CLS_SKILL_SACPUR CLS_BFEAT_SACPUR 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X08 0X2 1 CLASS_TYPE_SACPUR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SACPUR 5 0 0 1 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -51 Ocular_Adept 16790538 16789504 16789505 16789506 16789507 IR_OCULAR 6 CLS_ATK_2 CLS_FEAT_OCU CLS_SAVTHR_CLER CLS_SKILL_OCULAR CLS_BFEAT_OCU 2 CLS_SPGN_OCU **** 1 1 14 8 14 16 10 14 WIS 0X09 0X2 0 CLASS_TYPE_OCULAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OCULAR 50 0 0 0 10 2 0 **** 1 0 1 0 0 0 0 WIS Cleric 1 1 255 0 0 -52 Battlerager 16790539 16789530 16789531 16789532 16789533 IR_BTLRAGE 12 CLS_ATK_1 CLS_FEAT_BRAGE CLS_SAVTHR_FIGHT CLS_SKILL_BRAGE CLS_BFEAT_BRAGE 2 **** **** 1 0 16 15 14 10 10 10 STR 0X02 0X1 0 CLASS_TYPE_BATTLERAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BRAGE 5 0 0 0 5 0 0 cls_stat_brage **** **** **** **** **** **** **** **** **** **** **** **** **** **** -53 Mystic_Theurge 16790540 16789584 16789585 16789586 16789587 IR_MYSTIC 4 CLS_ATK_3 CLS_FEAT_MYSTIC CLS_SAVTHR_WIZ CLS_SKILL_MYSTIC CLS_BFEAT_MYSTIC 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_MYSTIC_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MYSTIC 50 0 1 1 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -54 Ninja_Spy 16790541 16789568 16789569 16789570 16789571 IR_ASASIN 8 CLS_ATK_2 CLS_FEAT_NINJA CLS_SAVTHR_MONK CLS_SKILL_NINJA CLS_BFEAT_ASASIN 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X0C 0X3 0 CLASS_TYPE_NINJA_SPY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NINJA 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -55 Samurai 16790542 16789537 16789538 16789539 16789540 IR_SAMURAI 10 CLS_ATK_1 CLS_FEAT_SAMUR CLS_SAVTHR_CLER CLS_SKILL_SAMUR CLS_BFEAT_SAMUR 4 **** **** 1 0 16 13 16 10 10 9 STR 0X05 0X1 0 CLASS_TYPE_SAMURAI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SAMUR 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -56 Warpriest 16790543 16789541 16789542 16789543 16789544 IR_CLERIC 8 CLS_ATK_1 CLS_FEAT_WARPR CLS_SAVTHR_CLER CLS_SKILL_WARPR CLS_BFEAT_WARPR 2 **** **** 1 0 10 14 14 12 16 10 WIS 0X00 0X0 0 CLASS_TYPE_WARPRIEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARPR 50 0 0 2 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -57 Spellfire_Channeler 16790544 16824664 16824665 16824666 16824667 IR_SPELLFIRE 4 CLS_ATK_3 CLS_FEAT_SPELLF CLS_SAVTHR_CLER CLS_SKILL_SPELLF CLS_BFEAT_SPELLF 2 **** **** 1 0 16 13 16 10 10 9 CON 0X00 0X0 0 CLASS_TYPE_SPELLFIRE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPELLF 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -58 Virtuoso 16790545 16828436 16828437 16828438 16828439 IR_BARD 6 CLS_ATK_3 CLS_FEAT_VIRT CLS_SAVTHR_WIZ CLS_SKILL_VIRT CLS_BFEAT_VIRT 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X00 0X0 0 CLASS_TYPE_VIRTUOSO 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_VIRT 50 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -59 Marshal 16790546 16828255 16828256 16828257 16828258 IR_MARSH 8 CLS_ATK_2 CLS_FEAT_MARSH CLS_SAVTHR_DRU CLS_SKILL_MARSH CLS_BFEAT_MARSH 4 **** **** 1 0 14 12 12 8 14 16 CHA 0X00 0X0 0 CLASS_TYPE_MARSHAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MARSH 0 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -60 Swashbuckler 16790547 16828217 16828218 16828219 16828220 IR_SWASH 10 CLS_ATK_1 CLS_FEAT_SWASH CLS_SAVTHR_FIGHT CLS_SKILL_SWASH CLS_BFEAT_SWASH 4 **** **** 1 0 12 14 12 8 16 14 DEX 0X00 0X0 0 CLASS_TYPE_SWASHBUCKLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWASH 0 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -61 Hexblade 16790548 16823462 16823463 16823464 16823465 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_HEXBL CLS_SAVTHR_CLER CLS_SKILL_HEXBL CLS_BFEAT_HEXBL 2 CLS_SPGN_HEXBL CLS_SPKN_HEXBL 1 1 14 14 14 10 12 14 CHA 0X08 0X2 0 CLASS_TYPE_HEXBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEXBL 0 1 0 0 -1 5 131 **** **** **** **** **** **** **** **** **** Hexblade **** **** **** **** **** -62 Duskblade 16790549 16824168 16824169 16824170 16824171 IR_HAVOCMAGE 8 CLS_ATK_1 CLS_FEAT_DUSKBL CLS_SAVTHR_CLER CLS_SKILL_DUSKBL CLS_BFEAT_DUSKBL 2 CLS_SPGN_DUSKBL CLS_SPKN_DUSKBL 1 1 15 12 14 10 15 10 STR 0X00 0X0 0 CLASS_TYPE_DUSKBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DUSKBL 0 1 0 0 -1 5 131 **** **** **** **** **** **** **** **** **** Duskblade **** **** **** **** **** -63 Scout 16790550 16822486 16822513 16822514 16822515 IR_ARCHER 8 CLS_ATK_2 CLS_FEAT_SCOUT CLS_SAVTHR_ROG CLS_SKILL_SCOUT CLS_BFEAT_SCOUT 8 **** **** 1 0 12 16 12 14 12 10 DEX 0X00 0X0 0 CLASS_TYPE_SCOUT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCOUT 0 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -64 Healer 16790551 16822656 16822657 16822658 16822659 IR_CBTMEDIC 8 CLS_ATK_3 CLS_FEAT_HEALER CLS_SAVTHR_CLER CLS_SKILL_HEALER CLS_BFEAT_HEALER 4 CLS_SPGN_HEALER **** 1 1 10 12 12 15 10 16 WIS 0X11 0X2 0 CLASS_TYPE_HEALER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEALER 0 1 0 0 -1 2 0 **** 1 0 0 0 0 0 0 WIS Healer 1 1 255 0 0 -65 Mage_Killer 16790552 16822219 16822220 16822221 16822222 IR_MAGEKILL 4 CLS_ATK_3 CLS_FEAT_MAGEK CLS_SAVTHR_WIZ CLS_SKILL_MAGEK CLS_BFEAT_MAGEK 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_MAGEKILLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAGEK 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -66 Harper_Mage 16790553 16822223 16822224 16822225 16822226 IEF_HARPWIZ 4 CLS_ATK_3 CLS_FEAT_HMAGE CLS_SAVTHR_WIZ CLS_SKILL_HMAGE CLS_BFEAT_HMAGE 4 **** **** 1 0 12 16 14 8 14 12 INT 0X10 0X2 0 CLASS_TYPE_HARPERMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HMAGE 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -67 Spell_Sword 16790554 16822227 16822228 16822229 16822230 IR_SPELLS 8 CLS_ATK_1 CLS_FEAT_SPELLS CLS_SAVTHR_CLER CLS_SKILL_SPELLS CLS_BFEAT_SPELLS 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_SPELLSWORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPELLS 50 0 2 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -68 Acolyte_Skin 16790555 16822237 16822238 16822239 16822240 IR_ACOLYTE 4 CLS_ATK_3 CLS_FEAT_AOTS CLS_SAVTHR_CLER CLS_SKILL_AOTS CLS_BFEAT_AOTS 2 **** **** 1 0 12 16 14 8 14 12 INT 0X08 0X2 0 CLASS_TYPE_ACOLYTE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_AOTS 50 0 2 0 10 10 0 cls_stat_aots **** **** **** **** **** **** **** **** **** **** **** **** **** **** -69 UnseenSeer 16790556 16822302 16822303 16822304 16822305 IR_BEGUIL 4 CLS_ATK_2 CLS_FEAT_UNSEER CLS_SAVTHR_WIZ CLS_SKILL_UNSEER CLS_BFEAT_UNSEER 6 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_UNSEER_SEER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UNSEER 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -70 Eldritch_Knight 16790557 16822308 16822309 16822310 16822311 IR_ELDKNI 6 CLS_ATK_1 CLS_FEAT_ELDKNI CLS_SAVTHR_FIGHT CLS_SKILL_ELDKNI CLS_BFEAT_ELDKNI 2 **** **** 1 0 14 13 14 10 14 13 INT 0X00 0X0 0 CLASS_TYPE_ELDRITCH_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ELDKNI 50 0 1 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -71 Elemental_Savant 16790558 16822312 16822313 16822314 16822315 IR_ELEMFIRE 4 CLS_ATK_3 CLS_FEAT_SAVANT CLS_SAVTHR_WIZ CLS_SKILL_SAVANT CLS_BFEAT_SAVANT 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_ELEMENTAL_SAVANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SAVANT 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -72 Factotum 16790559 16823092 16823093 16823094 16823095 IR_BEGUIL 8 CLS_ATK_2 CLS_FEAT_FACTUM CLS_SAVTHR_ROG CLS_SKILL_FACTUM CLS_BFEAT_FACTUM 6 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_FACTOTUM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FACTUM 20 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -73 CelebrantSharess 16790560 16826321 16826322 16826323 16826324 IR_HEARTW 6 CLS_ATK_3 CLS_FEAT_SHARSS CLS_SAVTHR_WIZ CLS_SKILL_SHARSS CLS_BFEAT_SHARSS 6 CLS_SPGN_SHARSS CLS_SPKN_SHARSS 1 1 12 16 14 8 14 12 CHA 0X13 0X3 0 CLASS_TYPE_CELEBRANT_SHARESS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHARSS 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** Celebrant **** **** **** **** **** -74 CultistShatteredPeak 16790561 16789654 16789655 16789656 16789657 IR_SPARCDLST 6 CLS_ATK_2 CLS_FEAT_CULTST CLS_SAVTHR_RANG CLS_SKILL_CULTST CLS_BFEAT_CULTST 6 CLS_SPGN_CULTST **** 1 1 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_CULTIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CULTST 5 0 0 0 5 64 130 **** 1 1 0 0 1 1 1 INT Cultist 1 1 255 0 0 -75 Forsaker 16790562 16847610 16847611 16847612 16847613 IC_LEGDREAD 12 CLS_ATK_1 CLS_FEAT_FORSAK CLS_SAVTHR_CLER CLS_SKILL_FORSAK CLS_BFEAT_FORSAK 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_FORSAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FORSAK 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -76 Incarnate 16790563 16836706 16836707 16836708 16836709 IR_PSION 6 CLS_ATK_3 CLS_FEAT_INCARN CLS_SAVTHR_CLER CLS_SKILL_INCARN CLS_BFEAT_INCARN 2 **** **** 1 0 10 14 14 12 16 10 INT 0X01 0X3 1 CLASS_TYPE_INCARNATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_INCARN 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -77 Soulborn 16790564 16836718 16836719 16836720 16836721 IR_SOULKNIFE 10 CLS_ATK_1 CLS_FEAT_SOULBN CLS_SAVTHR_FIGHT CLS_SKILL_SOULBN CLS_BFEAT_SOULBN 2 **** **** 1 0 16 13 16 10 10 9 STR 0X01 0X3 0 CLASS_TYPE_SOULBORN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULBN 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -78 Totemist 16790565 16836722 16836723 16836724 16836725 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_TOTEM CLS_SAVTHR_RANG CLS_SKILL_TOTEM CLS_BFEAT_TOTEM 4 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_TOTEMIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOTEM 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -79 Beguiler 16790566 16789870 16789871 16789872 16789873 IR_BEGUIL 6 CLS_ATK_3 CLS_FEAT_BEGUIL CLS_SAVTHR_WIZ CLS_SKILL_BEGUIL CLS_BFEAT_BEGUIL 6 CLS_SPGN_BEGUIL CLS_SPKN_BEGUIL 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_BEGUILER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEGUIL 20 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** Beguiler **** **** **** **** **** -80 Duelist 16790567 16822716 16822717 16822718 16822719 IR_DUEL 10 CLS_ATK_1 CLS_FEAT_DUEL CLS_SAVTHR_ROG CLS_SKILL_DUEL CLS_BFEAT_DUEL 4 **** **** 1 0 14 16 14 8 14 10 DEX 0X00 0X0 0 CLASS_TYPE_DUELIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DUEL 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -81 Hierophant 16790568 16822744 16822745 16822746 16822747 IR_HIERO 8 CLS_ATK_2 CLS_FEAT_HIERO CLS_SAVTHR_CLER CLS_SKILL_HIERO CLS_BFEAT_HIERO 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_HIEROPHANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HIERO 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -82 RedAvenger 16790569 16822765 16822766 16822767 16822768 IR_REDAVNG 8 CLS_ATK_2 CLS_FEAT_REDAV CLS_SAVTHR_MONK CLS_SKILL_REDAV CLS_BFEAT_REDAV 4 **** **** 1 0 14 14 14 15 10 10 DEX 0X00 0X0 0 CLASS_TYPE_RED_AVENGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_REDAV 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -83 KnightOfTheChalice 16790570 16822787 16822788 16822789 16822790 IR_CHALICE 12 CLS_ATK_1 CLS_FEAT_KCHAL CLS_SAVTHR_FIGHT CLS_SKILL_KCHAL CLS_BFEAT_KCHAL 2 CLS_SPGN_KCHAL **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_KNIGHT_CHALICE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KCHAL 50 0 0 0 10 6 0 **** 1 0 0 0 0 0 0 WIS Chalice 1 1 255 0 0 -84 Hathran 16790571 16825132 16825133 16825134 16825135 IR_CLERIC 4 CLS_ATK_3 CLS_FEAT_HATH CLS_SAVTHR_CLER CLS_SKILL_HATH CLS_BFEAT_HATH 2 **** **** 1 0 8 14 12 16 14 12 WIS 0X14 0X3 0 CLASS_TYPE_HATHRAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HATH 50 0 2 2 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -85 IronsoulForgemaster 16790572 16837815 16837816 16837817 16837818 IR_DWDEF 8 CLS_ATK_2 CLS_FEAT_IRNFRG CLS_SAVTHR_CLER CLS_SKILL_IRNFRG CLS_BFEAT_IRNFRG 4 **** **** 1 0 16 12 12 14 12 10 STR 0X10 0X2 0 CLASS_TYPE_IRONSOUL_FORGEMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IRNFRG 50 0 0 0 10 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -86 Stormlord 16790573 16823307 16823308 16823309 16823310 IR_STORMLORD 8 CLS_ATK_2 CLS_FEAT_STORML CLS_SAVTHR_CLER CLS_SKILL_STORML CLS_BFEAT_STORML 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X0A 0X3 0 CLASS_TYPE_STORMLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_STORML 50 0 0 1 10 108 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -87 HeartWarder 16790574 16822916 16822917 16822918 16822919 IR_HEARTW 4 CLS_ATK_2 CLS_FEAT_HEARTW CLS_SAVTHR_CLER CLS_SKILL_HEARTW CLS_BFEAT_HEARTW 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X13 0X3 0 CLASS_TYPE_HEARTWARDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEARTW 50 0 0 1 10 108 0 cls_stat_heartw **** **** **** **** **** **** **** **** **** **** **** **** **** **** -88 FistRaziel 16790575 16823311 16823312 16823313 16823314 IR_PALADIN 10 CLS_ATK_1 CLS_FEAT_FISTRA CLS_SAVTHR_PAL CLS_SKILL_FISTRA CLS_BFEAT_FISTRA 2 **** **** 1 0 16 10 14 12 10 14 CHA 0X15 0X3 0 CLASS_TYPE_FISTRAZIEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FISTRA 50 0 0 1 10 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -89 VassalOfBahamut 16790576 16823216 16823217 16823218 16823219 IR_VASSAL 10 CLS_ATK_1 CLS_FEAT_VASSAL CLS_SAVTHR_PAL CLS_SKILL_VASSAL CLS_BFEAT_VASSAL 2 CLS_SPGN_VASSAL **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_VASSAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VASSAL 50 0 0 0 10 6 0 **** 1 0 0 0 0 0 0 WIS Bahamut 1 1 255 0 0 -90 Lich 16790577 16823128 16823128 16823129 16823127 IR_PALEMA 4 CLS_ATK_4 CLS_FEAT_LICH CLS_SAVTHR_LICH CLS_SKILL_WIZ CLS_BFEAT_LICH 0 **** **** 1 0 13 13 13 13 13 13 INT 0X08 0X2 0 CLASS_TYPE_LICH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LICH 10 0 0 0 4 10 0 cls_stat_lich **** **** **** **** **** **** **** **** **** **** **** **** **** **** -91 PnPShifter 16790578 16824335 9027 9028 16824370 IR_SHIFTR 8 CLS_ATK_2 CLS_FEAT_PNPSFR CLS_SAVTHR_WILD CLS_SKILL_SHIFTR CLS_BFEAT_SHIFTR 4 **** **** 1 0 12 16 14 8 14 12 WIS 0X00 0X0 0 CLASS_TYPE_PNP_SHIFTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PNPSFR 50 0 0 0 10 108 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -92 ChampionCorellon 16790579 16828364 16828365 16828387 16828388 IR_COC 10 CLS_ATK_1 CLS_FEAT_COC CLS_SAVTHR_CLER CLS_SKILL_COC CLS_BFEAT_COC 2 **** **** 1 0 14 16 14 10 10 12 DEX 0X10 0X2 0 CLASS_TYPE_COC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_COC 50 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -93 SublimeChord 16790580 16829452 16829453 16829454 16829455 IR_X1_HARPER 6 CLS_ATK_3 CLS_FEAT_SCHORD CLS_SAVTHR_WIZ CLS_SKILL_SCHORD CLS_BFEAT_SCHORD 4 CLS_SPGN_SCHORD CLS_SPKN_SCHORD 1 1 10 14 12 10 14 16 CHA 0X00 0X0 0 CLASS_TYPE_SUBLIME_CHORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCHORD 50 0 0 0 10 46 131 **** **** **** **** **** **** **** **** **** SublimeCh **** **** **** **** **** -94 Artificer 16790581 16827101 16827102 16827103 16827104 **** 6 CLS_ATK_2 CLS_FEAT_ARTI CLS_SAVTHR_WIZ CLS_SKILL_ARTI CLS_BFEAT_ARTI 4 **** **** 0 0 10 14 12 10 16 14 CHA 0X00 0X0 0 CLASS_TYPE_ARTIFICER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARTI 0 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -95 Arcane_Duelist 16790582 16823520 16823521 16823522 16823523 IR_SPARCDLST 8 CLS_ATK_3 CLS_FEAT_ADST CLS_SAVTHR_BARD CLS_SKILL_ADST CLS_BFEAT_ADST 4 **** **** 1 0 12 16 14 8 14 12 CHA 0X00 0X0 0 CLASS_TYPE_ARCANE_DUELIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ADST 50 0 0 0 10 **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -96 ForceMissileMage 16790583 16836426 16836427 16836428 16836429 IR_HAVOCMAGE 4 CLS_ATK_3 CLS_FEAT_FMM CLS_SAVTHR_ROG CLS_SKILL_FMM CLS_BFEAT_FMM 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X00 0X0 0 CLASS_TYPE_FMM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FMM 5 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -97 WildMage 16790584 16836416 16836417 16836418 16836419 IR_WILDER 4 CLS_ATK_3 CLS_FEAT_WILDMG CLS_SAVTHR_ROG CLS_SKILL_WILDMG CLS_BFEAT_WILDMG 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X04 0X0 0 CLASS_TYPE_WILD_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WILDMG 50 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -98 Shadowsmith 16790585 16847414 16847415 16847416 16847417 IR_TEMPUS 8 CLS_ATK_1 CLS_FEAT_SHDSMT CLS_SAVTHR_ROG CLS_SKILL_SHDSMT CLS_BFEAT_SHDSMT 6 **** **** 1 0 14 13 14 10 14 13 INT 0x00 0x0 0 CLASS_TYPE_SHADOWSMITH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDSMT 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -99 Abjurant_Champion 16790586 16847652 16847653 16847654 16847655 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_ABCHAM CLS_SAVTHR_WIZ CLS_SKILL_ABCHAM CLS_BFEAT_ABCHAM 2 **** **** 1 0 14 13 14 10 14 13 INT 0X00 0X0 0 CLASS_TYPE_ABJURANT_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ABCHAM 5 0 1 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -100 Archmage 16790587 16825000 16825001 16825002 16825003 IR_EPICSPELL 4 CLS_ATK_3 CLS_FEAT_ARCH CLS_SAVTHR_WIZ CLS_SKILL_ARCH CLS_BFEAT_ARCH 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_ARCHMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCH 5 0 2 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -101 Oozemaster 16790588 16825036 16825037 16825038 16825039 IR_GENSUMMON 8 CLS_ATK_2 CLS_FEAT_OOZE CLS_SAVTHR_FIGHT CLS_SKILL_OOZE CLS_BFEAT_OOZE 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_OOZEMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOZEM 50 0 2 2 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -102 Psychic_Rogue 16790589 16835172 16835173 16835174 16835175 IR_PSYWARRIOR 6 CLS_ATK_2 CLS_FEAT_PSYROG CLS_SAVTHR_ROG CLS_SKILL_PSYROG CLS_BFEAT_PSYROG 6 **** **** 1 0 14 12 14 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_PSYROG 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYROG 20 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -103 Spelldancer 16790590 16835157 16835158 16835159 16835160 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_SPLDNC CLS_SAVTHR_BARD CLS_SKILL_SPLDNC CLS_BFEAT_SPLDNC 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_SPELLDANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPLDNC 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -104 KnightoftheWeave 16790591 16835149 16835150 16835151 16835152 IR_MAGEKILL 8 CLS_ATK_2 CLS_FEAT_KNGTWV CLS_SAVTHR_DRU CLS_SKILL_KNGTWV CLS_BFEAT_KNGTWV 2 CLS_SPGN_KNGTWV CLS_SPKN_KNGTWV 1 1 12 16 14 8 14 12 INT 0X10 0X2 0 CLASS_TYPE_KNIGHT_WEAVE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KNGTWV 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** KnightWeave **** **** **** **** **** -105 Drow_Judicator 16790592 16822863 16822864 16822865 16822866 IR_JUDICATOR 8 CLS_ATK_1 CLS_FEAT_DROWJ CLS_SAVTHR_FIGHT CLS_SKILL_DROWJ CLS_BFEAT_DROWJ 2 **** **** 1 0 16 12 16 10 10 10 STR 0X09 0X2 0 CLASS_TYPE_JUDICATOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DROWJ 50 0 3 3 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -106 ShadowbaneInquisitor 16790593 16835121 16835122 16835123 16835124 IR_MAA 10 CLS_ATK_1 CLS_FEAT_SDHINQ CLS_SAVTHR_BARD CLS_SKILL_SDHINQ CLS_BFEAT_SDHINQ 4 **** **** 1 0 12 12 12 15 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SHADOWBANE_INQUISITOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SDHINQ 50 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -107 ShadowbaneStalker 16790594 16835125 16835126 16835127 16835128 IR_TFSHAD 8 CLS_ATK_2 CLS_FEAT_SDHSTK CLS_SAVTHR_BARD CLS_SKILL_SDHSTK CLS_BFEAT_SDHSTK 6 **** **** 1 0 12 12 12 15 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SHADOWBANE_STALKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SDHSTK 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -108 WayfarerGuide 16790595 16835113 16835114 16835115 16835116 IR_MAESTER 6 CLS_ATK_3 CLS_FEAT_WAYFAR CLS_SAVTHR_WIZ CLS_SKILL_WAYFAR CLS_BFEAT_WAYFAR 2 **** **** 1 0 12 16 14 8 14 12 INT 0X14 0X3 0 CLASS_TYPE_WAR_WIZARD_OF_CORMYR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WAYFAR 3 0 2 0 3 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -109 Umbral_Disciple 16790596 16837827 16837828 16837829 16837830 IR_ASASIN 6 CLS_ATK_2 CLS_FEAT_UMBRAL CLS_SAVTHR_BARD CLS_SKILL_UMBRAL CLS_BFEAT_UMBRAL 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_UMBRAL_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UMBRAL 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -110 Alienist 16790597 16789710 16789711 16789712 16789713 IR_ALIEN 4 CLS_ATK_3 CLS_FEAT_ALIEN CLS_SAVTHR_WIZ CLS_SKILL_ALIEN CLS_BFEAT_ALIEN 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ALIENIST 1 1 1 2 2 4 6 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ALIEN 50 0 1 0 10 10 0 cls_stat_alien **** **** **** **** **** **** **** **** **** **** **** **** **** **** -111 BlackBloodCultist 16790598 16823068 16823077 16823078 16823079 IR_WILDWOLF 12 CLS_ATK_2 CLS_FEAT_BBC CLS_SAVTHR_BARB CLS_SKILL_BBC CLS_BFEAT_BBC 4 **** **** 1 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_BLACK_BLOOD_CULTIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BBC 50 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -112 Warlock 16790599 16827934 16827935 16827936 16827937 IR_WARLOCK 6 CLS_ATK_2 CLS_FEAT_WARLOK CLS_SAVTHR_WIZ CLS_SKILL_WARLOK CLS_BFEAT_WARLOK 2 **** **** 1 1 12 14 14 10 12 15 CHA 0X14 0X3 1 CLASS_TYPE_WARLOCK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARLOK 0 1 0 0 -1 10 0 **** **** **** **** **** **** **** **** **** Warlock **** **** **** **** **** -113 Fochlucan_Lyrist 16852476 16825142 16825143 16825144 16825145 IR_DRUID 6 CLS_ATK_1 CLS_FEAT_FOCLYR CLS_SAVTHR_BARD CLS_SKILL_FOCLYR CLS_BFEAT_FOCLYR 6 **** **** 1 0 10 12 12 14 12 16 CHA 0X02 0X0 0 CLASS_TYPE_FOCHLUCAN_LYRIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FOCLYR 50 0 1 1 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -114 Dragonsong_Lyrist 16790600 16825459 16825460 16825461 16825462 IR_DRSLYR 6 CLS_ATK_2 CLS_FEAT_DRSLYR CLS_SAVTHR_BARD CLS_SKILL_DRSLYR CLS_BFEAT_DRSLYR 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X10 0X2 0 CLASS_TYPE_DRAGONSONG_LYRIST 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_DSLYR 5 0 2 0 5 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -115 SpinemeldWarrior 16790601 16836998 16836999 16837000 16837001 IR_TEMPEST 10 CLS_ATK_1 CLS_FEAT_SPNMLD CLS_SAVTHR_FIGHT CLS_SKILL_SPNMLD CLS_BFEAT_SPNMLD 4 **** **** 1 0 16 14 14 14 10 8 STR 0X02 0X1 1 CLASS_TYPE_SPINEMELD_WARRIOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPNMLD 50 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -116 Nightshade 16790602 16825413 16825414 16825415 16825416 IR_ASASIN 8 CLS_ATK_2 CLS_FEAT_NIGHTS CLS_SAVTHR_ROG CLS_SKILL_NIGHTS CLS_BFEAT_NIGHTS 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X09 0X2 0 CLASS_TYPE_NIGHTSHADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NIGHTS 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -117 ShadowAdept 16790603 16825409 16825410 16825411 16825412 IR_SHADADEPT 4 CLS_ATK_3 CLS_FEAT_SHADEP CLS_SAVTHR_WIZ CLS_SKILL_SHADEP CLS_BFEAT_SHADEP 2 **** **** 1 0 14 16 14 8 14 10 DEX 0X08 0X2 0 CLASS_TYPE_SHADOW_ADEPT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHADEP 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -118 Soldier_of_Light 16790604 16825874 16825875 16825876 16825877 IR_PALADIN 10 CLS_ATK_1 CLS_FEAT_SOL CLS_SAVTHR_PAL CLS_SKILL_SOL CLS_BFEAT_SOL 2 CLS_SPGN_SOL **** 1 1 15 9 14 13 10 15 WIS 0X16 0X3 0 CLASS_TYPE_SOLDIER_OF_LIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOL 50 0 0 0 10 6 0 **** 1 0 0 0 0 0 0 WIS SoLight 1 1 255 0 0 -119 SapphireHierarch 16790605 16837004 16837005 16837006 16837007 IC_HOSPITALER 6 CLS_ATK_3 CLS_FEAT_SAPPHR CLS_SAVTHR_WIZ CLS_SKILL_SAPPHR CLS_BFEAT_SAPPHR 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X02 0X1 1 CLASS_TYPE_SAPPHIRE_HIERARCH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SAPPHR 50 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -120 Telflammar_Shadowlord 16790606 16822992 16822993 16822994 16822995 IR_TFSHAD 6 CLS_ATK_2 CLS_FEAT_TFSHAD CLS_SAVTHR_ROG CLS_SKILL_TFSHAD CLS_BFEAT_TFSHAD 4 CLS_SPGN_TFSHAD **** 1 1 12 16 14 10 14 10 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TFSHAD 6 0 0 0 6 8 128 **** 1 1 0 0 1 1 1 INT Telflammar 1 1 255 0 0 -121 BondedSummoner 16790607 16823012 16823013 16823014 16823015 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_BONDED CLS_SAVTHR_WIZ CLS_SKILL_BONDED CLS_BFEAT_BONDED 2 **** **** 1 0 12 14 12 12 16 10 DEX 0X00 0X0 0 CLASS_TYPE_BONDED_SUMMONNER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BONDED 50 0 2 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -122 Initiate_Draconic 16790608 16826056 16826057 16826058 16826059 IR_IODM 8 CLS_ATK_2 CLS_FEAT_INIDRA CLS_SAVTHR_MONK CLS_SKILL_INIDRA CLS_BFEAT_INIDRA 4 **** **** 1 0 14 14 14 15 10 10 DEX 0X00 0X0 0 CLASS_TYPE_INITIATE_DRACONIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_INIDRA 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -123 Battleguard_Tempus 16790609 16822940 16822941 16822942 16822943 IR_TEMPUS 10 CLS_ATK_1 CLS_FEAT_TEMPUS CLS_SAVTHR_PAL CLS_SKILL_TEMPUS CLS_BFEAT_TEMPUS 2 **** **** 1 0 14 12 12 14 12 14 WIS 0X02 0X1 0 CLASS_TYPE_TEMPUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TEMPUS 50 0 0 2 10 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -124 Bladesinger 16790610 16825986 16825987 16825988 16825989 IR_SPELLS 8 CLS_ATK_1 CLS_FEAT_BLADES CLS_SAVTHR_BARD CLS_SKILL_BLADES CLS_BFEAT_BLADES 2 **** **** 1 0 14 16 14 8 14 10 DEX 0X00 0X0 0 CLASS_TYPE_BLADESINGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLADES 50 0 2 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -125 Soulcaster 16790611 16837012 16837013 16837014 16837015 IR_MYSTIC 4 CLS_ATK_3 CLS_FEAT_SOULC CLS_SAVTHR_WIZ CLS_SKILL_SOULC CLS_BFEAT_SOULC 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_SOULCASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULC 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -126 Sacred_Fist 16790612 16825367 16825368 16825369 16825370 IR_SACREDFIST 8 CLS_ATK_1 CLS_FEAT_SACFIS CLS_SAVTHR_WILD CLS_SKILL_SACFIS CLS_BFEAT_SACFIS 4 **** **** 1 0 14 14 12 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_SACREDFIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SACFIS 50 0 0 1 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -127 Legendary_Dreadnought 16790613 16826086 16826087 16826088 16826089 IC_LEGDREAD 12 CLS_ATK_1 CLS_FEAT_LGDR CLS_SAVTHR_FIGHT CLS_SKILL_LGDR CLS_BFEAT_LGDR 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_LEGENDARY_DREADNOUGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LGDR 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -128 Disciple_of_Baalzebul 16790614 16826094 16826095 16826096 16826097 IC_BAALZEBUL 6 CLS_ATK_2 CLS_FEAT_BAAL CLS_SAVTHR_BARD CLS_SKILL_BAAL CLS_BFEAT_BAAL 6 **** **** 1 0 12 14 14 10 12 15 CHA 0X09 0X2 0 CLASS_TYPE_DISC_BAALZEBUL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BAAL 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -129 Mighty_Contender_of_Kord 16790615 16824935 16824936 16824937 16824938 IC_LEGDREAD 10 CLS_ATK_2 CLS_FEAT_KORD CLS_SAVTHR_CLER CLS_SKILL_KORD CLS_BFEAT_KORD 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_MIGHTY_CONTENDER_KORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KORD 50 0 0 1 10 4 0 cls_stat_kord **** **** **** **** **** **** **** **** **** **** **** **** **** **** -130 Iaijutsu_Master 16790616 16826114 16826115 16826116 16826117 IC_IAIJUTSU 10 CLS_ATK_1 CLS_FEAT_IAIJ CLS_SAVTHR_ROG CLS_SKILL_IAIJ CLS_BFEAT_IAIJ 4 **** **** 1 0 16 13 16 10 10 9 CHA 0X05 0X1 0 CLASS_TYPE_IAIJUTSU_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IAIJ 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -131 Disciple_of_Dispater 16790617 16826136 16826137 16826138 16826139 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_DISP CLS_SAVTHR_MONK CLS_SKILL_DISP CLS_BFEAT_DISP 4 **** **** 1 0 16 13 16 10 10 9 CON 0X09 0X2 0 CLASS_TYPE_DISPATER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DISP 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -132 CW_Samurai 16790618 16826168 16826169 16826170 16826171 IR_SAMURAI 10 CLS_ATK_1 CLS_FEAT_CWSM CLS_SAVTHR_FIGHT CLS_SKILL_SAMUR CLS_BFEAT_CWSM 2 **** **** 1 0 16 13 16 10 10 9 STR 0X05 0X1 0 CLASS_TYPE_CW_SAMURAI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CWSM 20 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -133 Ravager 16790619 16826156 16826157 16826158 16826159 IC_RAVA 10 CLS_ATK_1 CLS_FEAT_RAVA CLS_SAVTHR_FIGHT CLS_SKILL_RAVA CLS_BFEAT_RAVA 2 **** **** 1 0 16 13 16 10 10 9 STR 0X0A 0X3 0 CLASS_TYPE_RAVAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RAVA 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -134 Runescarred_Berserker 16790620 16826187 16826188 16826189 16826190 IC_RUNE 10 CLS_ATK_1 CLS_FEAT_RUNE CLS_SAVTHR_FIGHT CLS_SKILL_RUNE CLS_BFEAT_RUNE 4 **** **** 1 0 16 13 16 10 10 9 STR 0X02 0X1 0 CLASS_TYPE_RUNESCARRED 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RUNE 50 0 0 0 10 4 0 cls_stat_rune **** **** **** **** **** **** **** **** **** **** **** **** **** **** -135 Talontar_Blightlord 16790621 16824917 16824918 16824919 16824920 IR_CLERIC 8 CLS_ATK_2 CLS_FEAT_BLTL CLS_SAVTHR_CLER CLS_SKILL_BLTL CLS_BFEAT_BLTL 2 **** **** 1 0 16 13 16 10 10 9 WIS 0X09 0X2 0 CLASS_TYPE_BLIGHTLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLTL 50 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -136 Shadowcaster 16790622 16847394 16847395 16847396 16847397 IR_SHADADEPT 6 CLS_ATK_3 CLS_FEAT_SHDCST CLS_SAVTHR_CLER CLS_SKILL_SHDCST CLS_BFEAT_SHDCST 2 **** **** 1 0 10 10 14 12 16 14 CHA 0x00 0x0 0 CLASS_TYPE_SHADOWCASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDCST 20 1 0 0 -1 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -137 ChildOfNight 16790623 16847398 16847399 16847400 16847401 IR_X1_SHADOW 6 CLS_ATK_3 CLS_FEAT_CHLDNT CLS_SAVTHR_WIZ CLS_SKILL_CHLDNT CLS_BFEAT_CHLDNT 2 **** **** 1 0 10 10 14 12 16 14 CHA 0x00 0x0 0 CLASS_TYPE_CHILD_OF_NIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CHLDNT 50 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -138 MasterofShadow 16790624 16847402 16847403 16847404 16847405 IR_MYSTIC 8 CLS_ATK_3 CLS_FEAT_MSTRSH CLS_SAVTHR_CLER CLS_SKILL_MSTRSH CLS_BFEAT_MSTRSH 2 **** **** 1 0 12 14 14 10 12 15 CHA 0x00 0x0 0 CLASS_TYPE_MASTER_OF_SHADOW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MSTRSH 50 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -139 Noctumancer 16790625 16847406 16847407 16847408 16847409 IR_NOCTM 4 CLS_ATK_3 CLS_FEAT_NOCTM CLS_SAVTHR_CLER CLS_SKILL_NOCTM CLS_BFEAT_NOCTM 2 **** **** 1 0 12 14 14 10 12 15 CHA 0x00 0x0 **** CLASS_TYPE_NOCTUMANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NOCTM 50 0 1 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -140 Totem_Rager 16790626 16825977 16825978 16825979 16825980 IR_PSYWARRIOR 10 CLS_ATK_2 CLS_FEAT_TOTRAG CLS_SAVTHR_RANG CLS_SKILL_TOTRAG CLS_BFEAT_TOTRAG 4 **** **** 1 0 16 15 14 10 10 10 CON 0X00 0X0 0 CLASS_TYPE_TOTEM_RAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOTRAG 50 0 0 0 10 142 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -141 Ninja_CA 16790627 16832316 16832317 16832318 16832319 IR_NINJCA 6 CLS_ATK_2 CLS_FEAT_NINJCA CLS_SAVTHR_ROG CLS_SKILL_NINJCA CLS_BFEAT_NINJCA 6 **** **** 1 0 12 16 12 14 14 8 DEX 0X00 0X0 0 CLASS_TYPE_NINJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NINJCA 0 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -142 Shadowblade 16790628 16847410 16847411 16847412 16847413 IR_SHADOWBLADE 8 CLS_ATK_2 CLS_FEAT_SHDBLD CLS_SAVTHR_FIGHT CLS_SKILL_SHDBLD CLS_BFEAT_SHDBLD 2 **** **** 1 0 14 15 14 12 12 10 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDBLD 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -143 DragonShaman 16790629 16832703 16832704 16832705 16832706 IR_DRAGSHMN 10 CLS_ATK_2 CLS_FEAT_DRGSHM CLS_SAVTHR_CLER CLS_SKILL_DRGSHM CLS_BFEAT_DRGSHM 2 **** **** 1 0 12 14 16 10 14 10 CON 0X00 0X0 0 CLASS_TYPE_DRAGON_SHAMAN 1 1 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_DRGSHM 50 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -144 Dragonfire_Adept 16790630 16832914 16832915 16832916 16832917 IR_DRGNFIREADPT 8 CLS_ATK_3 CLS_FEAT_DFA CLS_SAVTHR_CLER CLS_SKILL_DFA CLS_BFEAT_DFA 4 **** **** 1 1 10 14 16 12 10 14 CON 0X00 0X0 0 CLASS_TYPE_DRAGONFIRE_ADEPT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DFA 50 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** Dragonfire **** **** **** **** **** -145 Psion 16790631 16823566 16823567 16823568 16823569 IR_PSION 4 CLS_ATK_3 CLS_FEAT_PSION CLS_SAVTHR_WIZ CLS_SKILL_PSION CLS_BFEAT_PSION 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_PSION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSION 0 1 0 0 -1 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -146 Psychic_Warrior 16790632 16823570 16823571 16823572 16823573 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_PSYWAR CLS_SAVTHR_FIGHT CLS_SKILL_PSYWAR CLS_BFEAT_PSYWAR 2 **** **** 1 0 14 12 14 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_PSYWAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYWAR 0 1 0 0 -1 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -147 Soulknife 16790633 16823574 16823575 16823576 16823577 IR_SOULKNIFE 10 CLS_ATK_2 CLS_FEAT_SOULKN CLS_SAVTHR_BARD CLS_SKILL_SOULKN CLS_BFEAT_SOULKN 4 **** **** 1 0 16 15 14 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SOULKNIFE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULKN 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -148 Wilder 16790634 16823578 16823579 16823580 16823581 IR_WILDER 6 CLS_ATK_2 CLS_FEAT_WILDER CLS_SAVTHR_WIZ CLS_SKILL_WILDER CLS_BFEAT_WILDER 4 **** **** 1 0 15 9 14 13 10 15 CHA 0X00 0X0 0 CLASS_TYPE_WILDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WILDER 0 1 0 0 -1 9 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -149 Thayan_Knight 16790635 16823506 16823507 16823508 16823509 IR_TKNIGHT 10 CLS_ATK_1 CLS_FEAT_THAYKT CLS_SAVTHR_FIGHT CLS_SKILL_THAYKT CLS_BFEAT_THAYKT 2 **** **** 1 0 12 16 14 8 14 12 STR 0X08 0X2 0 CLASS_TYPE_THAYAN_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_THAYKT 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -150 Red_Wizard 16790636 16822370 16822371 16822372 16822373 RED_WIZARD_PRC 4 CLS_ATK_3 CLS_FEAT_REDWIZ CLS_SAVTHR_WIZ CLS_SKILL_REDWIZ CLS_BFEAT_REDWIZ 2 **** **** 1 0 12 16 14 8 14 12 INT 0X08 0X2 0 CLASS_TYPE_RED_WIZARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_REDWIZ 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -151 True_Necro 16790637 16822374 16822375 16822376 16822377 ir_truenecro 4 CLS_ATK_3 CLS_FEAT_TNECRO CLS_SAVTHR_WIZ CLS_SKILL_TNECRO CLS_BFEAT_TNECRO 2 **** **** 1 0 12 16 14 8 14 12 INT 0x08 0x3 0 CLASS_TYPE_TNECRO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TNECRO 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -152 Arcane_Trickster 16790638 16822378 16822379 16822380 16822381 IR_MAGEKILL 4 CLS_ATK_3 CLS_FEAT_ARCTRK CLS_SAVTHR_BARD CLS_SKILL_ARCTRK CLS_BFEAT_ARCTRK 4 **** **** 1 0 12 16 14 8 14 12 INT 0X02 0X1 0 CLASS_TYPE_ARCTRICK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCTRK 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -153 Blood_Magus 16777216 16822382 16822383 16822384 16822385 IR_BLMAGUS 6 CLS_ATK_3 CLS_FEAT_BLMAGUS CLS_SAVTHR_FIGHT CLS_SKILL_BLMAGU CLS_BFEAT_BLMAGU 2 **** **** 0 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_BLOOD_MAGUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLMAGUS 50 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -154 Diabolist 16790639 16822386 16822387 16822388 16822389 IR_ACOLYTE 4 CLS_ATK_3 CLS_FEAT_DIABOL CLS_SAVTHR_WIZ CLS_SKILL_DIABOL CLS_BFEAT_DIABOL 2 **** **** 1 0 12 16 14 8 14 12 INT 0X0D 0X3 0 CLASS_TYPE_DIABOLIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIABOL 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -155 Fist_Hextor 16790640 16822390 16822391 16822392 16822393 IR_HEXTOR 10 CLS_ATK_1 CLS_FEAT_HEXTOR CLS_SAVTHR_FIGHT CLS_SKILL_HEXTOR CLS_BFEAT_HEXTOR 2 **** **** 1 0 12 16 14 8 14 12 STR 0X0C 0X3 0 CLASS_TYPE_HEXTOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEXTOR 50 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -156 IncandescentChampion 16790641 16837917 16837918 16837919 16837920 IR_TEMPEST 10 CLS_ATK_2 CLS_FEAT_INCAND CLS_SAVTHR_WIZ CLS_SKILL_INCAND CLS_BFEAT_INCAND 2 **** **** 1 0 16 14 14 14 10 8 STR 0X08 0X2 1 CLASS_TYPE_INCANDESCENT_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_INCAND 50 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -157 JusticeOfWealdAndWoe 16790642 16847276 16847277 16847278 16847279 IR_JUSTWW 8 CLS_ATK_2 CLS_FEAT_JUSTWW CLS_SAVTHR_WILD CLS_SKILL_JUSTWW CLS_BFEAT_JUSTWW 4 CLS_SPGN_JUSTWW CLS_SPKN_JUSTWW 1 1 12 16 14 8 14 12 DEX 0x00 0x0 0 CLASS_TYPE_JUSTICEWW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_JUSTWW 50 0 0 0 10 4 3 **** **** **** **** **** **** **** **** **** Justiceww **** **** **** **** **** -158 AcolyteOfTheEgo 16790643 16834483 16834484 16834484 16834486 ir_acolyteego 8 CLS_ATK_1 CLS_FEAT_ACEGO CLS_SAVTHR_FIGHT CLS_SKILL_ACEGO CLS_BFEAT_ACEGO 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X00 0X0 0 CLASS_TYPE_ACOLYTE_EGO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ACEGO 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -159 Peerless_Archer 16790644 16822520 16822521 16822522 16822523 IR_ARCHER 10 CLS_ATK_1 CLS_FEAT_PARCH CLS_SAVTHR_FIGHT CLS_SKILL_PARCH CLS_BFEAT_PARCH 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_PEERLESS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PARCH 50 0 0 0 10 55 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -160 Lasher 16790645 16824616 16824617 16824618 16824619 IR_LASHER 10 CLS_ATK_1 CLS_FEAT_LASHER CLS_SAVTHR_ROG CLS_SKILL_LASHER CLS_BFEAT_LASHER 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_LASHER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LASHER 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -161 Bow_Initiate 16790646 16826374 16826375 16826376 16826377 IR_OOTBI 8 CLS_ATK_1 CLS_FEAT_OOTBI CLS_SAVTHR_BARD CLS_SKILL_OOTBI CLS_BFEAT_OOTBI 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ORDER_BOW_INITIATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOTBI 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -162 Hellfire_Warlock 16790647 16789986 16789987 16789988 16789989 IR_HFWRLK 6 CLS_ATK_2 CLS_FEAT_HFWRLK CLS_SAVTHR_WIZ CLS_SKILL_HFWRLK CLS_BFEAT_HFWRLK 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X00 0X0 0 CLASS_TYPE_HELLFIRE_WARLOCK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HFWRLK 3 0 0 0 3 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -163 Thrall_of_Orcus 16790648 16823320 16823321 16823322 16823323 IR_ORCUS 8 CLS_ATK_1 CLS_FEAT_ORCUS CLS_SAVTHR_CLER CLS_SKILL_ORCUS CLS_BFEAT_ORCUS 2 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_ORCUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ORCUS 50 0 0 2 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -164 Plant 16852499 16833077 16833078 16833079 16833080 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 10 15 11 15 14 18 STR 0X00 0X0 0 CLASS_TYPE_PLANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PLANT 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -165 BlackFlame_Zealot 16790650 16823356 16823357 16823358 16823359 IR_BFZ 6 CLS_ATK_2 CLS_FEAT_BFZ CLS_SAVTHR_BARD CLS_SKILL_BFZ CLS_BFEAT_BFZ 4 **** **** 1 0 12 16 14 8 14 12 WIS 0X08 0X2 0 CLASS_TYPE_BFZ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BFZ 50 0 0 2 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -166 ShiningBlade 16790651 16823444 16823445 16823446 16823447 IR_HEIRONEOUS 10 CLS_ATK_1 CLS_FEAT_SBHEIR CLS_SAVTHR_CLER CLS_SKILL_SBHEIR CLS_BFEAT_SBHEIR 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SHINING_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SBHEIR 50 0 0 2 10 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -167 KnightMiddleCircle 16790652 16822468 16822469 16822470 16822471 IR_KOTMC 10 CLS_ATK_1 CLS_FEAT_KOTMC CLS_SAVTHR_WIZ CLS_SKILL_KOTMC CLS_BFEAT_KOTMC 4 CLS_SPGN_KOTMC **** 1 1 15 9 14 13 10 15 WIS 0X11 0X2 0 CLASS_TYPE_KNIGHT_MIDDLECIRCLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KOTMC 50 0 0 0 10 6 0 **** 1 0 0 0 0 0 0 WIS MiddleCircle 1 1 255 0 0 -168 Maester 16790653 16824556 16824557 16824558 16824559 IR_MAESTER 4 CLS_ATK_3 CLS_FEAT_MAESTR CLS_SAVTHR_WIZ CLS_SKILL_MAESTR CLS_BFEAT_MAESTR 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_MAESTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAESTR 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -169 Combat_Medic 16790654 16825644 16825645 16825646 16825647 IR_CBTMEDIC 6 CLS_ATK_3 CLS_FEAT_CBTMED CLS_SAVTHR_ROG CLS_SKILL_CBTMED CLS_BFEAT_CBTMED 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X10 0X2 0 CLASS_TYPE_COMBAT_MEDIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CBTMED 5 0 0 1 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -170 Ollam 16790655 16824982 16824983 16824984 16824985 IR_OLLAM 8 CLS_ATK_3 CLS_FEAT_OLLAM CLS_SAVTHR_WIZ CLS_SKILL_OLLAM CLS_BFEAT_OLLAM 6 **** **** 1 0 12 16 14 8 14 12 WIS 0X15 0X3 0 CLASS_TYPE_OLLAM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OLLAM 5 0 0 2 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -171 WarslingSniper 16790656 16825661 16825662 16825663 16825664 IR_WARSLING 6 CLS_ATK_1 CLS_FEAT_WRSLNG CLS_SAVTHR_ROG CLS_SKILL_WRSLNG CLS_BFEAT_WRSLNG 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_HALFLING_WARSLINGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WRSLNG 6 0 0 0 6 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -172 **SpiritShaman** 16790657 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -173 Werewolf 16790658 16824716 16824717 16824718 16824719 IR_WILDWOLF 8 CLS_ATK_1 CLS_FEAT_WWOLF CLS_SAVTHR_ROG CLS_SKILL_WWOLF CLS_BFEAT_WWOLF 2 **** **** 1 0 14 14 14 15 10 10 DEX 0X02 0X1 0 CLASS_TYPE_WEREWOLF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WWOLF 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -174 Hospitaler 16790659 16823380 16823381 16823382 16823383 IC_HOSPITALER 8 CLS_ATK_1 CLS_FEAT_HOSP CLS_SAVTHR_FIGHT CLS_SKILL_HOSP CLS_BFEAT_HOSP 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X04 0X1 0 CLASS_TYPE_HOSPITALER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HOSP 50 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -175 MasterOfShrouds 16790660 16822343 16822344 16822345 16822346 IR_X1_SHADOW 8 CLS_ATK_1 CLS_FEAT_MOS CLS_SAVTHR_SORC CLS_SKILL_MOS CLS_BFEAT_MOS 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X09 0X2 0 CLASS_TYPE_MASTER_OF_SHROUDS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MOS 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -176 ArcaneMasterHarper 16790661 16825217 16825218 16825219 16825220 IR_MH_MASTERH 6 CLS_ATK_2 CLS_FEAT_MHARP CLS_SAVTHR_BARD CLS_SKILL_MHARP CLS_BFEAT_MHARP 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X10 0X2 0 CLASS_TYPE_MASTER_HARPER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MHARP 50 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -177 Frenzied_Berserker 16790662 16824216 16824217 16824218 16824219 IR_FREBZK 12 CLS_ATK_1 CLS_FEAT_FREBZK CLS_SAVTHR_BARB CLS_SKILL_FREBZK CLS_BFEAT_FREBZK 2 **** **** 1 0 16 14 14 14 10 8 STR 0X02 0X1 0 CLASS_TYPE_FRE_BERSERKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FREBZK 50 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -178 Tempest 16790663 16824242 16824243 16824244 16824245 IR_TEMPEST 10 CLS_ATK_1 CLS_FEAT_TEMPST CLS_SAVTHR_BARB CLS_SKILL_TEMPST CLS_BFEAT_TEMPST 2 **** **** 1 0 10 16 12 10 16 10 DEX 0X00 0X0 0 CLASS_TYPE_TEMPEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TEMPST 50 0 0 0 10 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -179 Foe_Hunter 16790664 16824256 16824257 16824258 16824259 IR_FH 10 CLS_ATK_1 CLS_FEAT_FH CLS_SAVTHR_WILD CLS_SKILL_FH CLS_BFEAT_FH 2 **** **** 1 0 10 16 12 10 16 10 DEX 0X00 0X0 0 CLASS_TYPE_FOE_HUNTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FH 50 0 0 0 10 58 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -180 Verdant_Lord 16855246 16855247 16855248 16855249 16855250 IR_DRUID 8 CLS_ATK_1 CLS_FEAT_VLORD CLS_SAVTHR_DRU CLS_SKILL_VLORD CLS_BFEAT_VLORD 4 **** **** 1 0 14 13 13 16 10 10 WIS 0X10 0X2 0 CLASS_VERDANT_LORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VLORD 50 0 0 1 10 3 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -181 Orc_Warlord 16790666 16824312 16824313 16824314 16824315 IR_ORCWAR 12 CLS_ATK_1 CLS_FEAT_ORCWAR CLS_SAVTHR_MONK CLS_SKILL_ORCWAR CLS_BFEAT_ORCWAR 2 **** **** 1 0 16 14 14 14 10 8 STR 0X08 0X2 0 CLASS_TYPE_ORC_WARLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ORCWAR 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -182 Thrall_of_Grazzt 16790667 16824516 16824517 16824518 16824519 IR_TOG 6 CLS_ATK_3 CLS_FEAT_TOG CLS_SAVTHR_WIZ CLS_SKILL_TOG CLS_BFEAT_TOG 4 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_THRALL_OF_GRAZZT_A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOG_A 50 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -183 Necrocarnate 16790668 16838080 16838081 16838082 16838083 ir_truenecro 6 CLS_ATK_3 CLS_FEAT_NECRNM CLS_SAVTHR_WIZ CLS_SKILL_NECRNM CLS_BFEAT_BLANK 2 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_NECROCARNATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NECRNM 13 0 0 0 13 13 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -184 Eldritch_Disciple 16790669 16790013 16790014 16790015 16790016 IR_EDISC 8 CLS_ATK_2 CLS_FEAT_EDISC CLS_SAVTHR_CLER CLS_SKILL_EDISC CLS_BFEAT_EDISC 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_ELDRITCH_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EDISC 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -185 Eldritch_Theurge 16790670 16790017 16790018 16790019 16790020 IR_ETHEUR 4 CLS_ATK_2 CLS_FEAT_ETHEUR CLS_SAVTHR_WIZ CLS_SKILL_ETHEUR CLS_BFEAT_ETHEUR 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ELDRITCH_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ETHEUR 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -186 Ghost_Faced_Killer 16790671 16832352 16832353 16832354 16832355 IR_GFKILL_PRC 8 CLS_ATK_1 CLS_FEAT_GFKILL CLS_SAVTHR_FIGHT CLS_SKILL_GFKILL CLS_BFEAT_GFKILL 4 **** **** 1 0 16 13 16 10 10 9 STR 0X09 0X2 0 CLASS_TYPE_GHOST_FACED_KILLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_GFKILL 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -187 DreadNecromancer 16790672 16847586 16847587 16847588 16847589 IR_PALEMA 6 CLS_ATK_3 CLS_FEAT_DNECRO CLS_SAVTHR_WIZ CLS_SKILL_DNECRO CLS_BFEAT_DNECRO 2 CLS_SPGN_DNECRO CLS_SPKN_DNECRO 1 1 10 14 12 10 14 16 CHA 0X08 0X2 0 CLASS_TYPE_DREAD_NECROMANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DNECRO 0 1 0 0 -1 10 130 **** **** **** **** **** **** 1 **** **** DreadNecro **** **** **** **** **** -188 UltimateMagus **** 16790350 16790351 16790352 16790353 IR_EPICSPELL 4 CLS_ATK_3 CLS_FEAT_UM CLS_SAVTHR_WIZ CLS_SKILL_UM CLS_BFEAT_UM 2 **** **** 0 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_MYSTIC_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UM 50 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -189 ForestMaster 16790673 16793736 16793737 16793738 16793739 IR_DRUID 8 CLS_ATK_2 CLS_FEAT_FORMAS CLS_SAVTHR_DRU CLS_SKILL_FORMAS CLS_BFEAT_FORMAS 2 **** **** 1 0 14 13 13 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_FORESTMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FORMAS 50 0 0 1 10 3 0 cls_stat_formas **** **** **** **** **** **** **** **** **** **** **** **** **** **** -190 Archivist 16790674 16789866 16789867 16789868 16789869 IR_ARCHIVIST 6 CLS_ATK_3 CLS_FEAT_ARCHV CLS_SAVTHR_CLER CLS_SKILL_ARCHV CLS_BFEAT_ARCHV 4 CLS_SPGN_ARCHV **** 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ARCHIVIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCHV 0 1 0 0 -1 10 65 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -191 DeepstoneSentinel 16790675 16829771 16829772 16829773 16829774 IR_DWDEF 10 CLS_ATK_2 CLS_FEAT_DEEPST CLS_SAVTHR_FIGHT CLS_SKILL_DEEPST CLS_BFEAT_DEEPST 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_DEEPSTONE_SENTINEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DEEPST 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -192 JadePhoenixMage 16790676 16827181 16827182 16827183 16827184 IR_JPM 6 CLS_ATK_1 CLS_FEAT_JPM CLS_SAVTHR_FIGHT CLS_SKILL_JPM CLS_BFEAT_JPM 2 **** **** 1 0 14 14 14 10 16 8 INT 0X10 0X2 0 CLASS_TYPE_JADE_PHOENIX_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_JPM 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -193 BloodclawMaster 16790677 16827149 16827150 16827151 16827152 IR_BLOODCLAW 12 CLS_ATK_2 CLS_FEAT_BLDCLW CLS_SAVTHR_WILD CLS_SKILL_BLDCLW CLS_BFEAT_BLDCLW 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_BLOODCLAW_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLDCLW 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -194 RubyKnightVindicator 16790678 16827167 16827168 16827169 16827170 IR_HEIRONEOUS 8 CLS_ATK_1 CLS_FEAT_RBYKNT CLS_SAVTHR_WIZ CLS_SKILL_RBYKNT CLS_BFEAT_RBYKNT 4 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_RUBY_VINDICATOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RBYKNT 50 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -195 MasterOfNine 16790679 16847557 16847558 16847559 16847560 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_MONINE CLS_SAVTHR_WIZ CLS_SKILL_MONINE CLS_BFEAT_MONINE 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_MASTER_OF_NINE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MONINE 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -196 EternalBlade 16790680 16834750 16834751 16834752 16834753 IR_FH 10 CLS_ATK_1 CLS_FEAT_ETBL CLS_SAVTHR_FIGHT CLS_SKILL_ETBL CLS_BFEAT_ETBL 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_ETERNAL_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ETBL 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -197 ShadowSunNinja 16790681 16834778 16834779 16834780 16834781 IR_SHADADEPT 8 CLS_ATK_2 CLS_FEAT_SSN CLS_SAVTHR_MONK CLS_SKILL_SSN CLS_BFEAT_SSN 4 **** **** 1 0 16 13 16 10 10 9 STR 0X11 0X2 0 CLASS_TYPE_SHADOW_SUN_NINJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SSN 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -198 WitchbornBinder 16790682 16838144 16838145 16838146 16838147 IR_WITCH 6 CLS_ATK_2 CLS_FEAT_WCHBRN CLS_SAVTHR_WIZ CLS_SKILL_WCHBRN CLS_BFEAT_WCHBRN 4 **** **** 1 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_WITCHBORN_BINDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WCHBRN 50 0 0 0 10 6 2 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -199 Lion_of_Talisid 16855216 16855217 16855218 16855219 16855220 IR_LIONTALISID 8 CLS_ATK_2 CLS_FEAT_LOT CLS_SAVTHR_DRU CLS_SKILL_LOT CLS_BFEAT_LOT 4 **** **** 1 0 14 13 13 16 10 10 WIS 0X16 0X3 0 CLASS_TYPE_LION_OF_TALISID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LOT 50 0 0 1 10 3 0 **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** -200 Disciple_of_Meph 16790684 16823016 16823017 16823018 16823019 IR_DISCMEPH 8 CLS_ATK_1 CLS_FEAT_MEPH CLS_SAVTHR_MONK CLS_SKILL_MEPH CLS_BFEAT_MEPH 4 **** **** 1 0 12 16 14 8 14 12 CHA 0X09 0X2 0 CLASS_TYPE_DISCIPLE_OF_MEPH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MEPH 50 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -201 Soul_Eater 16790685 16832116 16832117 16832118 16832119 IR_SOULEATER 8 CLS_ATK_1 CLS_FEAT_SLEAT CLS_SAVTHR_MONK CLS_SKILL_SLEAT CLS_BFEAT_SLEAT 4 **** **** 1 0 14 16 10 12 14 10 INT 0X09 0X2 0 CLASS_TYPE_SOUL_EATER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SLEAT 50 0 0 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -202 Henshin_Mystic 16790686 16825076 16825078 16825079 16825080 IR_HNSHN 8 CLS_ATK_2 CLS_FEAT_HNSHN CLS_SAVTHR_MONK CLS_SKILL_HNSHN CLS_BFEAT_HNSHN 4 **** **** 1 0 14 14 14 15 10 10 WIS 0X05 0X1 0 CLASS_TYPE_HENSHIN_MYSTIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HNSHN 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -203 Drunken_Master 16790687 16825095 16825097 16825098 16825099 IR_DRNKN 8 CLS_ATK_2 CLS_FEAT_DRNKN CLS_SAVTHR_RANG CLS_SKILL_DRNKN CLS_BFEAT_DRNKN 4 **** **** 1 0 14 14 14 15 10 10 WIS 0X00 0X0 0 CLASS_TYPE_DRUNKEN_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRNKN 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -204 Enlightened_Fist 16790688 16829416 16829417 16829418 16829419 IR_SACREDFIST 8 CLS_ATK_2 CLS_FEAT_ENLFIS CLS_SAVTHR_BARD CLS_SKILL_ENLFIS CLS_BFEAT_ENLFIS 4 **** **** 1 0 10 14 12 14 16 10 DEX 0X00 0X0 0 CLASS_TYPE_ENLIGHTENEDFIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ENLFIS 50 0 1 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -205 Morninglord 16790689 16789624 16789625 16789626 16789627 IR_MORNING 8 CLS_ATK_2 CLS_FEAT_ML CLS_SAVTHR_CLER CLS_SKILL_ML CLS_BFEAT_ML 2 **** **** 1 0 14 8 14 16 10 14 CHA 0X11 0X2 0 CLASS_TYPE_MORNINGLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ML 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -206 IncarnumBlade 16790690 16838136 16838137 16838138 16838139 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_IBLADE CLS_SAVTHR_FIGHT CLS_SKILL_IBLADE CLS_BFEAT_BLANK 2 **** **** 1 0 16 14 14 14 10 8 STR 0X01 0X3 0 CLASS_TYPE_INCARNUM_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IBLADE 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -207 OAShaman 16790691 16827659 16827660 16827661 16827662 IR_CLERIC 6 CLS_ATK_2 CLS_FEAT_SHAMAN CLS_SAVTHR_WIZ CLS_SKILL_SHAMAN CLS_BFEAT_SHAMAN 4 CLS_SPGN_SHAMAN **** 1 1 10 13 12 16 13 12 WIS 0X00 0X0 0 CLASS_TYPE_SHAMAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHAMAN 0 1 0 0 -1 2 0 **** 1 0 1 0 0 0 0 WIS Shaman 1 1 1 0 0 -208 Pyrokineticist 16790692 16827043 16827044 16827045 16827046 IR_BFZ 8 CLS_ATK_2 CLS_FEAT_PYRO CLS_SAVTHR_WILD CLS_SKILL_PYRO CLS_BFEAT_PYRO 2 **** **** 1 0 10 14 14 10 12 16 CHA 0X03 0X1 0 CLASS_TYPE_PYROKINETICIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PYRO 50 0 0 0 10 9 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -209 Shadowmind 16790693 16829364 16829365 16829366 16829367 IR_TFSHAD 6 CLS_ATK_2 CLS_FEAT_SDMIND CLS_SAVTHR_BARD CLS_SKILL_SDMIND CLS_BFEAT_SDMIND 4 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_SHADOWMIND 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SDMIND 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -210 Psychic_Thurge 16790694 16823908 16823909 16823910 16823911 IR_PSYCHIC 4 CLS_ATK_3 CLS_FEAT_PSYCH CLS_SAVTHR_WIZ CLS_SKILL_PSYCH CLS_BFEAT_PSYCH 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_PSYCHIC_THEURGE 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYCH 50 0 0 1 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -211 Cerebremancer 16790695 16823912 16823913 16823914 16823915 IR_CEREBRE 4 CLS_ATK_3 CLS_FEAT_CEREB CLS_SAVTHR_WIZ CLS_SKILL_CEREB CLS_BFEAT_CEREB 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_CEREBREMANCER 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CEREB 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -212 Thrallherd 16790696 16823940 16823941 16823942 16823943 IR_THRALLHERD 4 CLS_ATK_3 CLS_FEAT_THRALL CLS_SAVTHR_WIZ CLS_SKILL_THRALL CLS_BFEAT_THRALL 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_THRALLHERD 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_THRALL 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -213 FistOfZouken 16790697 16823964 16823965 16823966 16823967 IR_ZUOKEN 6 CLS_ATK_2 CLS_FEAT_FOZ CLS_SAVTHR_BARD CLS_SKILL_FOZ CLS_BFEAT_FOZ 4 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_FIST_OF_ZUOKEN 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FOZ 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -214 HavocMage 16790698 16826709 16826710 16826711 16826712 IR_HAVOCMAGE 8 CLS_ATK_2 CLS_FEAT_HAVOCM CLS_SAVTHR_CLER CLS_SKILL_HAVOCM CLS_BFEAT_HAVOCM 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_HAVOC_MAGE 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HAVOCM 5 0 2 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -215 Contemplative 16790699 16832016 16832017 16832018 16832019 IR_CONTEMPLATIVE 6 CLS_ATK_3 CLS_FEAT_CNTMP CLS_SAVTHR_WIZ CLS_SKILL_CNTMP CLS_BFEAT_CNTMP 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X00 0X0 0 CLASS_TYPE_CONTEMPLATIVE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CNTMP 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -216 Runecaster 16790700 16831969 16831970 16831971 16831972 IC_RUNECASTER 8 CLS_ATK_2 CLS_FEAT_RUNEC CLS_SAVTHR_CLER CLS_SKILL_RUNEC CLS_BFEAT_RUNEC 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X00 0X0 0 CLASS_TYPE_RUNECASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RUNEC 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -217 Warchief 16790701 16825714 16825715 16825716 16825717 IR_WARCHIEF 10 CLS_ATK_2 CLS_FEAT_WARCHF CLS_SAVTHR_CLER CLS_SKILL_WARCHF CLS_BFEAT_WARCHF 2 **** **** 1 0 14 16 10 12 14 10 INT 0X00 0X0 0 CLASS_TYPE_WARCHIEF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARCHF 50 0 0 0 10 0 0 cls_stat_warchf **** **** **** **** **** **** **** **** **** **** **** **** **** **** -218 Warmind 16790702 16825724 16825725 16825726 16825727 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_WARMND CLS_SAVTHR_WILD CLS_SKILL_WARMND CLS_BFEAT_WARMND 2 **** **** 1 0 14 12 14 16 10 10 WIS 0X04 0X1 0 CLASS_TYPE_WARMIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARMND 50 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -219 IronMind 16790703 16822552 16822553 16822554 16822555 IC_IRONMIND 10 CLS_ATK_2 CLS_FEAT_IRNMND CLS_SAVTHR_WIZ CLS_SKILL_IRNMND CLS_BFEAT_IRNMND 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X00 0X0 0 CLASS_TYPE_IRONMIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IRNMND 50 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -220 SanctifiedMind 16790704 16822568 16822569 16822570 16822571 IR_THRALLHERD 8 CLS_ATK_1 CLS_FEAT_SNCMND CLS_SAVTHR_CLER CLS_SKILL_SNCMND CLS_BFEAT_SNCMND 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X10 0X2 0 CLASS_TYPE_SANCTIFIED_MIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SNCMND 6 0 0 1 6 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -221 SlayerOfDomiel 16790705 16827566 16827567 16827568 16827569 IR_HEIRONEOUS 6 CLS_ATK_2 CLS_FEAT_SOD CLS_SAVTHR_ROG CLS_SKILL_SOD CLS_BFEAT_SOD 4 CLS_SPGN_SOD **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SLAYER_OF_DOMIEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOD 50 0 0 0 10 2 0 **** 1 0 0 0 0 0 0 WIS Domiel 1 1 255 0 0 -222 DiscipleOfAsmodeus 16790706 16822624 16822625 16822626 16822627 IR_SOULEATER 6 CLS_ATK_2 CLS_FEAT_DOA CLS_SAVTHR_WIZ CLS_SKILL_DOA CLS_BFEAT_DOA 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X09 0X2 0 CLASS_TYPE_DISCIPLE_OF_ASMODEUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DOA 50 0 2 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -223 Dirgesinger 16790707 16822584 16822585 16822586 16822587 IR_PALEMA 6 CLS_ATK_2 CLS_FEAT_DIRGE CLS_SAVTHR_WIZ CLS_SKILL_DIRGE CLS_BFEAT_DIRGE 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X08 0X2 0 CLASS_TYPE_DIRGESINGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIRGE 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -224 Suel_Archanamach 16790708 16822598 16822599 16822600 16822601 IR_HAVOCMAGE 8 CLS_ATK_2 CLS_FEAT_SUEL CLS_SAVTHR_BARD CLS_SKILL_SUEL CLS_BFEAT_SUEL 4 CLS_SPGN_SUEL CLS_SPKN_SUEL 1 1 14 14 14 15 10 10 WIS 0X00 0X0 0 CLASS_TYPE_SUEL_ARCHANAMACH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SUEL 50 0 0 0 10 10 131 **** **** **** **** **** **** **** **** **** Suel **** **** **** **** **** -225 Favoured_Soul 16790709 16822610 16822611 16822612 16822613 IR_SPELLFIRE 8 CLS_ATK_2 CLS_FEAT_FAVSOL CLS_SAVTHR_MONK CLS_SKILL_FAVSOL CLS_BFEAT_FAVSOL 2 CLS_SPGN_FAVSOL CLS_SPKN_FAVSOL 1 1 10 14 12 14 10 16 CHA 0X00 0X0 0 CLASS_TYPE_FAVOURED_SOUL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FAVSOL 20 1 0 0 -1 2 3 **** **** **** **** **** **** **** **** **** FavoredSoul **** **** **** **** **** -226 WarWizardOfCormyr 16790710 16822644 16822645 16822646 16822647 IC_RUNE 4 CLS_ATK_3 CLS_FEAT_WWOC CLS_SAVTHR_CLER CLS_SKILL_WWOC CLS_BFEAT_WWOC 2 **** **** 1 0 12 16 14 8 14 12 INT 0X14 0X3 0 CLASS_TYPE_WAR_WIZARD_OF_CORMYR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WWOC 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -227 SkullclanHunter 16790711 16824867 16824868 16824869 16824870 IR_SKULLCLAN 6 CLS_ATK_2 CLS_FEAT_SKLCLN CLS_SAVTHR_BARD CLS_SKILL_SKLCLN CLS_BFEAT_SKLCLN 6 **** **** 1 0 14 14 14 15 10 10 WIS 0X11 0X2 0 CLASS_TYPE_SKULLCLAN_HUNTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SKLCLN 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -228 Truenamer 16790712 16828481 16828482 16828483 16828484 IR_TRUENAME 6 CLS_ATK_2 CLS_FEAT_TRUE CLS_SAVTHR_BARD CLS_SKILL_TRUE CLS_BFEAT_TRUE 4 **** **** 1 0 10 12 14 10 16 14 INT 0X00 0X0 0 CLASS_TYPE_TRUENAMER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TRUE 20 1 0 0 -1 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -229 MasterAlchemist 16790713 16847239 16847240 16847241 16847242 IR_MSTALC 4 CLS_ATK_3 CLS_FEAT_MSTALC CLS_SAVTHR_WIZ CLS_SKILL_MSTALC CLS_BFEAT_MSTALC 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_MASTER_ALCHEMIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MSTALC 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -230 Bereft 16790714 16827537 16827538 16827539 16827540 IR_MAESTER 6 CLS_ATK_2 CLS_FEAT_BEREFT CLS_SAVTHR_WIZ CLS_SKILL_BEREFT CLS_BFEAT_BEREFT 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X01 0X3 1 CLASS_TYPE_BEREFT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEREFT 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -231 BrimstoneSpeaker 16790715 16827554 16827555 16827556 16827557 IR_BRIMSTONE 8 CLS_ATK_2 CLS_FEAT_BRIMST CLS_SAVTHR_CLER CLS_SKILL_BRIMST CLS_BFEAT_BRIMST 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X11 0X2 0 CLASS_TYPE_BRIMSTONE_SPEAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BRIMST 50 0 0 2 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -232 Shugenja **** 16825142 16825143 16825144 16825145 IR_HNSHN 6 CLS_ATK_3 CLS_FEAT_SHUGEN CLS_SAVTHR_WIZ CLS_SKILL_SHUGEN CLS_BFEAT_SHUGEN 4 **** **** 0 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SHUGENJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHUGEN 0 1 0 0 -1 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -233 Sohei 16790716 16827429 16827430 16827431 16827432 IR_FIGHTER 10 CLS_ATK_2 CLS_FEAT_SOHEI CLS_SAVTHR_CLER CLS_SKILL_SOHEI CLS_BFEAT_SOHEI 2 CLS_SPGN_SOHEI **** 1 1 16 10 13 14 13 10 STR 0X05 0X1 0 CLASS_TYPE_SOHEI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOHEI 0 1 0 0 -1 6 0 **** 1 0 0 0 0 0 0 WIS Sohei 1 4 255 0 0 -234 Crusader 16790717 16829702 16829703 16829704 16829705 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_CRUSDR CLS_SAVTHR_FIGHT CLS_SKILL_CRUSDR CLS_BFEAT_CRUSDR 4 **** **** 1 0 16 14 14 10 12 10 STR 0X1E 0X3 1 CLASS_TYPE_CRUSADER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CRUSDR 0 1 0 0 -1 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -235 Swordsage 16790718 16829706 16829707 16829708 16829709 IR_MONK 8 CLS_ATK_2 CLS_FEAT_SWDSGE CLS_SAVTHR_BARD CLS_SKILL_SWDSGE CLS_BFEAT_SWDSGE 6 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_SWORDSAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWDSGE 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -236 Warblade 16790719 16829710 16829711 16829712 16829713 IR_FIGHTER 12 CLS_ATK_1 CLS_FEAT_WARBLD CLS_SAVTHR_FIGHT CLS_SKILL_WARBLD CLS_BFEAT_WARBLD 4 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_WARBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARBLD 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -237 Warmage 16790720 16827604 16827605 16827606 16827607 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_WRMAGE CLS_SAVTHR_WIZ CLS_SKILL_WRMAGE CLS_BFEAT_WRMAGE 2 CLS_SPGN_WRMAGE CLS_SPKN_WRMAGE 1 1 10 14 12 10 14 16 INT 0X00 0X0 0 CLASS_TYPE_WARMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WRMAGE 0 1 0 0 -1 10 130 **** **** **** **** **** **** **** **** **** Warmage **** **** **** **** **** -238 Knight 16790721 16827632 16827633 16827634 16827635 IR_PALADIN 12 CLS_ATK_1 CLS_FEAT_KNIGHT CLS_SAVTHR_WIZ CLS_SKILL_KNIGHT CLS_BFEAT_KNIGHT 2 **** **** 1 0 16 10 16 10 10 12 STR 0X05 0X1 0 CLASS_TYPE_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KNIGHT 20 1 0 0 -1 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -239 FistOfDalQuor 16790722 16827033 16827034 16827035 16827036 IR_SHOUDISC 10 CLS_ATK_2 CLS_FEAT_DALQUR CLS_SAVTHR_CLER CLS_SKILL_DALQUR CLS_BFEAT_DALQUR 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_FIST_DAL_QUOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DALQUR 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -240 HandOfTheWingedMasters 16790723 16832694 16832695 16832696 16832697 IR_HOTWM 8 CLS_ATK_2 CLS_FEAT_HOTWM CLS_SAVTHR_BARD CLS_SKILL_HOTWM CLS_BFEAT_HOTWM 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_HANDOTWM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HOTWM 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -241 Talon_of_Tiamat 16790724 16832629 16832630 16832631 16832632 IR_TALON_TIAMAT 8 CLS_ATK_2 CLS_FEAT_TALTIA CLS_SAVTHR_FIGHT CLS_SKILL_TALTIA CLS_BFEAT_TALTIA 2 **** **** 1 0 15 9 14 13 10 15 STR 0X09 0X2 0 CLASS_TYPE_TALON_OF_TIAMAT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TALTIA 50 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -242 Dragon_Devotee 16790725 16832633 16832634 16832635 16832636 IR_DRAGON_DEVO 6 CLS_ATK_2 CLS_FEAT_DRADEV CLS_SAVTHR_FIGHT CLS_SKILL_DRADEV CLS_BFEAT_DRADEV 4 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_DRAGON_DEVOTEE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRADEV 5 0 0 0 5 10 0 cls_stat_dradev **** **** **** **** **** **** **** **** **** **** **** **** **** **** -243 FrostMage 16790726 16835103 16835104 16835105 16835106 IR_ELEMCOLD 4 CLS_ATK_3 CLS_FEAT_FROSTM CLS_SAVTHR_WIZ CLS_SKILL_FROSTM CLS_BFEAT_FROSTM 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X00 0X0 0 CLASS_TYPE_FROST_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FROSTM 50 0 1 0 10 1 0 cls_stat_frostm **** **** **** **** **** **** **** **** **** **** **** **** **** **** -244 WarforgedJuggernaut 16790727 16835083 16835084 16835085 16835086 IR_SHOUDISC 12 CLS_ATK_1 CLS_FEAT_JUGGR CLS_SAVTHR_FIGHT CLS_SKILL_JUGGR CLS_BFEAT_JUGGR 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_WARFORGED_JUGGERNAUT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_JUGGR 5 0 0 0 5 64 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -245 Battlesmith 16790728 16835069 16835070 16835071 16835072 IC_LEGDREAD 10 CLS_ATK_1 CLS_FEAT_BSMITH CLS_SAVTHR_FIGHT CLS_SKILL_BSMITH CLS_BFEAT_BSMITH 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_BATTLESMITH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BSMITH 5 0 0 0 5 64 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -246 NentyarHunter 16790729 16835057 16835058 16835059 16835060 IR_RANGER 6 CLS_ATK_2 CLS_FEAT_HUNTER CLS_SAVTHR_RANG CLS_SKILL_HUNTER CLS_BFEAT_HUNTER 4 CLS_SPGN_HUNTER **** 1 1 12 16 14 8 14 12 DEX 0X10 0X2 0 CLASS_TYPE_NENTYAR_HUNTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HUNTER 5 0 0 0 5 64 130 **** 1 0 0 0 0 0 0 WIS Nentyar 1 1 255 0 0 -247 Blighter 16790730 16835035 16835036 16835037 16835038 IR_JUSTWW 8 CLS_ATK_2 CLS_FEAT_BLIGHT CLS_SAVTHR_DRU CLS_SKILL_BLIGHT CLS_BFEAT_BLIGHT 4 CLS_SPGN_BLIGHT **** 1 1 12 16 14 8 14 12 INT 0X08 0X2 0 CLASS_TYPE_BLIGHTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLIGHT 50 0 **** 0 10 10 0 **** 1 0 0 0 0 0 0 WIS Blighter 1 1 255 0 0 -248 Rage_Mage 16790731 16789817 16789818 16789819 16789820 IR_RAGEMAGE 8 CLS_ATK_2 CLS_FEAT_RAGEM CLS_SAVTHR_BARB CLS_SKILL_RAGEM CLS_BFEAT_RAGEM 2 **** **** 1 0 12 16 14 10 14 10 INT 0X02 0X1 0 CLASS_TYPE_RAGE_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RAGEM 50 0 2 0 10 15 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -249 Dragonheart_Mage 16790732 16832498 16832499 16832500 16832501 IR_DRGNHTMAGE 6 CLS_ATK_3 CLS_FEAT_DRGNHT CLS_SAVTHR_CLER CLS_SKILL_DRGNHT CLS_BFEAT_DRGNHT 2 **** **** 1 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_DRAGONHEART_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRGNHT 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -250 Swift_Wing 16790733 16832494 16832495 16832496 16832497 DRADIS_RADIANT 8 CLS_ATK_2 CLS_FEAT_SWFTWG CLS_SAVTHR_WILD CLS_SKILL_SWFTWG CLS_BFEAT_SWFTWG 4 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_SWIFT_WING 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWFTWG 50 0 0 1 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -251 Diamond_Dragon 16790734 16832440 16832441 16832442 16832443 DRADIS_CRYSTAL 8 CLS_ATK_2 CLS_FEAT_DIADRA CLS_SAVTHR_BARD CLS_SKILL_DIADRA CLS_BFEAT_DIADRA 2 **** **** 1 0 14 14 12 10 16 10 STR 0X01 0X3 1 CLASS_TYPE_DIAMOND_DRAGON 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIADRA 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -252 Frostrager 16790735 16834512 16834513 16834514 16834515 IR_FREBZK 12 CLS_ATK_1 CLS_FEAT_FRTRGR CLS_SAVTHR_BARB CLS_SKILL_FRTRGR CLS_BFEAT_FRTRGR 2 **** **** 1 0 16 14 14 14 10 8 STR 0X00 0X0 0 CLASS_TYPE_FROSTRAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FRTRGR 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -253 CrintiShadowMarauder 16790736 16823080 16823081 16823082 16823083 IR_TFSHAD 8 CLS_ATK_2 CLS_FEAT_CRINTI CLS_SAVTHR_ROG CLS_SKILL_CRINTI CLS_BFEAT_CRINTI 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X08 0X2 0 CLASS_TYPE_CRINTI_SHADOW_MARAUDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CRINTI 5 0 0 0 5 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** -254 ShadowThief 16790737 16823088 16823089 16823090 16823091 IR_X1_SHADOW 6 CLS_ATK_2 CLS_FEAT_AMN CLS_SAVTHR_ROG CLS_SKILL_AMN CLS_BFEAT_AMN 6 **** **** 1 0 16 15 14 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SHADOW_THIEF_OF_AMN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_AMN 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** + Label Short Name Plural Lower Description Icon HitDie AttackBonusTable FeatsTable SavingThrowTable SkillsTable BonusFeatsTable SkillPointBase SpellGainTable SpellKnownTable PlayerClass SpellCaster Str Dex Con Wis Int Cha PrimaryAbil AlignRestrict AlignRstrctType InvertRestrict Constant EffCRLvl01 EffCRLvl02 EffCRLvl03 EffCRLvl04 EffCRLvl05 EffCRLvl06 EffCRLvl07 EffCRLvl08 EffCRLvl09 EffCRLvl10 EffCRLvl11 EffCRLvl12 EffCRLvl13 EffCRLvl14 EffCRLvl15 EffCRLvl16 EffCRLvl17 EffCRLvl18 EffCRLvl19 EffCRLvl20 PreReqTable MaxLevel XPPenalty ArcSpellLvlMod DivSpellLvlMod EpicLevel Package CastType StatGainTable MemorizesSpells SpellbookRestricted PickDomains PickSchool LearnScroll Arcane ASF SpellcastingAbil SpellTableColumn CLMultiplier MinCastingLevel MinAssociateLevel CanCastSpontaneously SkipSpellSelection +0 Barbarian 112187 5213 1 4890 240 IR_BARBARIN 12 CLS_ATK_1 CLS_FEAT_BARB CLS_SAVTHR_BARB CLS_SKILL_BARB CLS_BFEAT_BARB 4 **** **** 1 0 16 15 14 10 10 10 STR 0X02 0X1 0 CLASS_TYPE_BARBARIAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BARB 0 1 0 0 -1 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +1 Bard 112188 2 3 4891 241 IR_BARD 6 CLS_ATK_2 CLS_FEAT_BARD CLS_SAVTHR_BARD CLS_SKILL_BARD CLS_BFEAT_BARD 6 CLS_SPGN_BARD CLS_SPKN_BARD 1 1 12 14 14 10 12 15 CHA 0X02 0X1 0 CLASS_TYPE_BARD 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_BARD 0 1 0 0 -1 1 131 **** 0 1 0 0 0 1 1 CHA Bard 1 1 255 0 0 +2 Cleric 112189 4 5 4892 242 IR_CLERIC 8 CLS_ATK_2 CLS_FEAT_CLER CLS_SAVTHR_CLER CLS_SKILL_CLER CLS_BFEAT_CLER 2 CLS_SPGN_CLER **** 1 1 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_CLERIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CLER 0 1 0 0 -1 2 8 **** 1 0 1 0 0 0 0 WIS Cleric 1 1 255 1 0 +3 Druid 112190 6 7 4893 243 IR_DRUID 8 CLS_ATK_2 CLS_FEAT_DRUID CLS_SAVTHR_DRU CLS_SKILL_DRU CLS_BFEAT_DRU 4 CLS_SPGN_DRU **** 1 1 14 13 13 16 10 10 WIS 0X01 0X3 1 CLASS_TYPE_DRUID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRU 0 1 0 0 -1 3 0 **** 1 0 0 0 0 0 0 WIS Druid 1 1 1 0 0 +4 Fighter 112191 8 9 4894 244 IR_FIGHTER 10 CLS_ATK_1 CLS_FEAT_FIGHT CLS_SAVTHR_FIGHT CLS_SKILL_FIGHT CLS_BFEAT_FIGHT 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_FIGHTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FIGHT 0 1 0 0 -1 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +5 Monk 112192 10 11 4895 245 IR_MONK 8 CLS_ATK_2 CLS_FEAT_MONK CLS_SAVTHR_MONK CLS_SKILL_MONK CLS_BFEAT_MONK 4 **** **** 1 0 14 14 14 15 10 10 DEX 0X05 0X1 0 CLASS_TYPE_MONK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MONK 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +6 Paladin 112193 12 13 4896 246 IR_PALADIN 10 CLS_ATK_1 CLS_FEAT_PAL CLS_SAVTHR_PAL CLS_SKILL_PAL CLS_BFEAT_PAL 2 CLS_SPGN_PAL **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_PALADIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PAL 0 1 0 0 -1 6 0 **** 1 0 0 0 0 0 0 WIS Paladin 1 4 255 0 0 +7 Ranger 112194 14 15 4897 247 IR_RANGER 10 CLS_ATK_1 CLS_FEAT_RANG CLS_SAVTHR_RANG CLS_SKILL_RANG CLS_BFEAT_RANG 4 CLS_SPGN_RANG **** 1 1 14 16 13 13 10 10 WIS 0X00 0X0 0 CLASS_TYPE_RANGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RANG 0 1 0 0 -1 7 0 **** 1 0 0 0 0 0 0 WIS Ranger 1 4 6 0 0 +8 Rogue 112195 16 17 4898 248 IR_ROGUE 6 CLS_ATK_2 CLS_FEAT_ROG CLS_SAVTHR_ROG CLS_SKILL_ROG CLS_BFEAT_ROG 8 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ROGUE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ROG 0 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +9 Sorcerer 112196 18 19 4899 249 IR_SORCERER 4 CLS_ATK_3 CLS_FEAT_SORC CLS_SAVTHR_SORC CLS_SKILL_SORC CLS_BFEAT_SORC 2 CLS_SPGN_SORC CLS_SPKN_SORC 1 1 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SORCERER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SORC 0 1 0 0 -1 9 131 **** 0 1 0 0 0 1 1 CHA Wiz_Sorc 1 1 1 0 0 +10 Wizard 112197 20 21 4900 250 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_WIZ CLS_SAVTHR_WIZ CLS_SKILL_WIZ CLS_BFEAT_WIZ 2 CLS_SPGN_WIZ **** 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_WIZARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WIZ 0 1 0 0 -1 10 209 **** 1 1 0 1 1 1 1 INT Wiz_Sorc 1 1 1 0 0 +11 Aberration 112198 525 525 4901 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_ABER CLS_SAVTHR_WIZ CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 14 14 11 14 3 5 STR 0X00 0X0 0 CLASS_TYPE_ABERRATION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ABER 0 0 0 0 -1 73 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +12 Animal 112199 526 526 4902 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 13 17 15 12 2 6 STR 0X00 0X0 0 CLASS_TYPE_ANIMAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ANI 0 0 0 0 -1 74 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +13 Construct 112200 528 528 4903 8154 IR_WIZARD 10 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_CONS CLS_SKILL_CREA CLS_BFEAT_BARB 0 **** **** 1 0 21 9 10 11 10 3 STR 0X00 0X0 0 CLASS_TYPE_CONSTRUCT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CON 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +14 Humanoid 112201 1763 1764 4904 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 6 **** **** 1 0 15 10 13 11 8 8 STR 0X00 0X0 0 CLASS_TYPE_HUMANOID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HUM 0 0 0 0 -1 76 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +15 Monstrous 112202 536 536 4905 8154 IR_WIZARD 8 CLS_ATK_1 CLS_FEAT_MONHUM CLS_SAVTHR_BARD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 19 10 15 10 7 8 STR 0X00 0X0 0 CLASS_TYPE_MONSTEROUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MON 0 0 0 0 -1 77 0 **** **** **** **** **** **** **** **** **** Monstrous **** **** **** **** **** +16 Elemental 112203 539 539 4906 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 17 8 13 11 4 11 STR 0X00 0X0 0 CLASS_TYPE_ELEMENTAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ELE 0 0 0 0 -1 78 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +17 Fey 112204 540 540 4907 8154 IR_WIZARD 6 CLS_ATK_3 CLS_FEAT_FEY CLS_SAVTHR_BARD CLS_SKILL_FEY CLS_BFEAT_BARB 6 **** **** 1 0 10 15 11 15 14 18 DEX 0X00 0X0 0 CLASS_TYPE_FEY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FEY 0 0 0 0 -1 79 0 **** **** **** **** **** **** **** **** **** Fey **** **** **** **** **** +18 Dragon 112205 529 529 4908 8154 IR_DRGNFIREADPT 12 CLS_ATK_1 CLS_FEAT_DRAG CLS_SAVTHR_MONK CLS_SKILL_DRAGON CLS_BFEAT_BARB 6 **** **** 1 0 13 10 13 10 11 10 STR 0X00 0X0 0 CLASS_TYPE_DRAGON 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRAG 0 0 0 0 -1 80 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +19 Undead 112206 547 547 4909 8154 IR_WIZARD 12 CLS_ATK_3 CLS_FEAT_CREA CLS_SAVTHR_WIZ CLS_SKILL_CREA CLS_BFEAT_BARB 4 **** **** 1 0 10 12 10 10 10 11 STR 0X00 0X0 0 CLASS_TYPE_UNDEAD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UNDEAD 0 0 0 0 -1 81 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +20 Commoner 112207 2291 2292 4910 8155 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_COMM CLS_SAVTHR_CONS CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 10 10 12 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_COMMONER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 **** 0 0 0 0 -1 82 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +21 Beast 112208 527 527 4911 8154 IR_WIZARD 10 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 16 13 16 3 12 8 STR 0X00 0X0 0 CLASS_TYPE_BEAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEAST 0 0 0 0 -1 83 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +22 Giant 112209 541 541 4912 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_GIAN CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 25 8 19 10 6 17 STR 0X00 0X0 0 CLASS_TYPE_GIANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_GIANT 0 0 0 0 -1 84 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +23 MagicBeast 112210 542 542 4913 8154 IR_WIZARD 10 CLS_ATK_1 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 15 8 15 12 2 10 STR 0X00 0X0 0 CLASS_TYPE_MAGICAL_BEAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAGBST 0 0 0 0 -1 85 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +24 Outsider 112211 4812 4812 4914 8154 IR_WIZARD 8 CLS_ATK_1 CLS_FEAT_OUTS CLS_SAVTHR_MONK CLS_SKILL_OUTS CLS_BFEAT_BARB 8 **** **** 1 0 15 10 13 13 10 12 STR 0X00 0X0 0 CLASS_TYPE_OUTSIDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OUTS 0 0 0 0 -1 86 0 **** **** **** **** **** **** **** **** **** Outsider **** **** **** **** **** +25 Shapechanger 112212 546 546 4915 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_SHCHNG CLS_SAVTHR_MONK CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 15 11 17 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SHAPECHANGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHAPE 0 0 0 0 -1 87 0 **** **** **** **** **** **** **** **** **** Shapechanger **** **** **** **** **** +26 Vermin 112213 548 548 4916 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 11 17 12 10 10 3 STR 0X00 0X0 0 CLASS_TYPE_VERMIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VERMIN 0 0 0 0 -1 88 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +27 Shadowdancer 112214 2944 2945 2946 2947 IR_X1_SHADOW 8 CLS_ATK_2 CLS_FEAT_SHADOW CLS_SAVTHR_ROG CLS_SKILL_SHADOW CLS_BFEAT_SHADOW 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWDANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHADOW 50 0 0 0 10 63 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +28 Harper 112215 2956 2957 2958 2959 IR_X1_HARPER 6 CLS_ATK_2 CLS_FEAT_HARPER CLS_SAVTHR_BARD CLS_SKILL_HARPER CLS_BFEAT_HARPER 4 CLS_SPGN_HARPER CLS_SPKN_HARPER 1 1 12 16 14 8 14 12 DEX 0X10 0X2 0 CLASS_TYPE_HARPER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HARPER 5 0 0 0 5 64 130 **** **** **** **** **** **** **** **** **** Harper **** **** **** **** **** +29 Arcane_Archer 112216 9003 9004 9005 9006 IR_ARCHER 8 CLS_ATK_1 CLS_FEAT_ARCHER CLS_SAVTHR_WILD CLS_SKILL_ARCHER CLS_BFEAT_ARCHER 4 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ARCANE_ARCHER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCHER 50 0 0 0 10 65 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +30 Assassin 112217 9007 9008 9009 16790386 IR_ASASIN 6 CLS_ATK_2 CLS_FEAT_ASASIN CLS_SAVTHR_ROG CLS_SKILL_ASASIN CLS_BFEAT_ASASIN 4 CLS_SPGN_ASASIN CLS_SPKN_ASASIN 1 1 12 16 14 8 14 12 DEX 0X09 0X2 0 CLASS_TYPE_ASSASSIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ASASIN 50 0 0 0 10 66 131 **** 1 1 0 0 1 1 1 INT Assassin 1 1 255 0 0 +31 Blackguard 112218 9011 9012 9013 16790387 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_BLKGRD CLS_SAVTHR_FIGHT CLS_SKILL_BLKGRD CLS_BFEAT_BLKGRD 2 CLS_SPGN_BLKGRD **** 1 1 12 16 14 8 14 12 CON 0X09 0X2 0 CLASS_TYPE_BLACKGUARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLKGRD 50 0 0 0 10 67 0 **** 1 0 0 0 0 0 0 WIS Blackguard 1 1 255 0 0 +32 Champion_Torm 112219 9015 9016 9017 9018 IR_DIVCHA 10 CLS_ATK_1 CLS_FEAT_DIVCHA CLS_SAVTHR_WILD CLS_SKILL_DIVCHA CLS_BFEAT_DIVCHA 2 **** **** 1 0 12 16 14 8 14 12 CHA 0X10 0X2 0 CLASS_TYPE_DIVINE_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIVCHA 50 0 0 0 10 109 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +33 WeaponMaster 112220 9019 9019 9021 9022 IR_WM 10 CLS_ATK_1 CLS_FEAT_WM CLS_SAVTHR_ROG CLS_SKILL_WM CLS_BFEAT_WM 2 **** **** 1 0 12 16 14 8 14 12 STR 0X00 0X0 0 CLASS_TYPE_WEAPON_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WM 50 0 0 0 10 112 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +34 Pale_Master 112221 9020 9023 9024 16834511 IR_PALEMA 6 CLS_ATK_3 CLS_FEAT_PALEMA CLS_SAVTHR_DRU CLS_SKILL_PALEMA CLS_BFEAT_PALEMA 2 **** **** 1 0 12 16 14 8 14 12 INT 0X08 0X2 0 CLASS_TYPE_PALE_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PALEMA 50 0 2 0 10 110 0 cls_stat_palema **** **** **** **** **** **** **** **** **** **** **** **** **** **** +35 Shifter 112222 9026 9027 9028 9029 IR_SHIFTR 8 CLS_ATK_2 CLS_FEAT_SHIFTR CLS_SAVTHR_WILD CLS_SKILL_SHIFTR CLS_BFEAT_SHIFTR 4 **** **** 1 0 12 16 14 8 14 12 WIS 0X00 0X0 0 CLASS_TYPE_SHIFTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHIFTR 50 0 0 0 10 108 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +36 Dwarven_Defender 112223 76418 76419 76420 76422 IR_DWDEF 12 CLS_ATK_1 CLS_FEAT_DWDEF CLS_SAVTHR_CLER CLS_SKILL_DWDEF CLS_BFEAT_DWDEF 2 **** **** 1 0 16 8 15 14 10 12 STR 0X05 0X1 0 CLASS_TYPE_DWARVEN_DEFENDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DWDEF 50 0 0 0 10 89 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +37 Dragon_Disciple 112224 16832127 16832128 16832129 16832130 IR_DRAGOND 6 CLS_ATK_2 CLS_FEAT_DRADIS CLS_SAVTHR_CLER CLS_SKILL_DRADIS CLS_BFEAT_DRADIS 2 **** **** 1 0 14 8 14 16 10 14 STR 0X00 0X0 0 CLASS_TYPE_DRAGON_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRADIS 50 0 0 0 10 111 0 cls_stat_dradis **** **** **** **** **** **** **** **** **** **** **** **** **** **** +38 Ooze 112225 84438 84438 84437 8154 IR_CLERIC 10 CLS_ATK_2 CLS_FEAT_CLER CLS_SAVTHR_CLER CLS_SKILL_CLER CLS_BFEAT_CLER 0 **** **** 0 0 14 8 14 16 10 14 STR 0X00 0X0 0 CLASS_TYPE_OOZE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOZE 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +39 Eye_of_Gruumsh 16790665 16824294 16824295 16824296 16824297 IR_GRUUMSH 12 CLS_ATK_1 CLS_FEAT_EOG CLS_SAVTHR_BARB CLS_SKILL_EOG CLS_BFEAT_EOG 2 **** **** 1 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_PRC_EYE_OF_GRUUMSH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EOG 50 0 0 0 10 17 0 cls_stat_eog **** **** **** **** **** **** **** **** **** **** **** **** **** **** +40 Shou_Disciple 16790649 16823346 16823347 16823348 16823349 IR_SHOUDISC 10 CLS_ATK_1 CLS_FEAT_SHOU CLS_SAVTHR_WILD CLS_SKILL_SHOU CLS_BFEAT_SHOU 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_SHOU 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHOU 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +41 Purple_Dragon_Knight 112226 111710 111711 111712 111713 IR_PDK 10 CLS_ATK_1 CLS_FEAT_PDK CLS_SAVTHR_FIGHT CLS_SKILL_PDK CLS_BFEAT_PDK 2 **** **** 1 0 12 16 14 8 14 12 STR 0X14 0X3 0 CLASS_TYPE_PDK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PDK 5 0 0 0 5 131 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +42 UrPriest 16790529 16835606 16835607 16835608 16835609 IR_WARLOCK 8 CLS_ATK_2 CLS_FEAT_URPRST CLS_SAVTHR_WIZ CLS_SKILL_URPRST CLS_BFEAT_URPRST 2 CLS_SPGN_BLIGHT **** 1 1 15 9 14 13 10 15 WIS 0X09 0X2 0 CLASS_TYPE_UR_PRIEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_URPRST 50 0 0 0 10 10 0 **** 1 0 0 0 0 0 0 WIS Cleric 1 1 255 0 0 +43 Binder 16790530 16835216 16835217 16835218 16835219 IR_HFWRLK 8 CLS_ATK_2 CLS_FEAT_BINDER CLS_SAVTHR_CLER CLS_SKILL_BINDER CLS_BFEAT_BINDER 2 **** **** 1 0 15 12 14 10 15 10 STR 0X00 0X0 0 CLASS_TYPE_BINDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BINDER 20 1 0 0 -1 710 131 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +44 AnimaMage 16790531 16835425 16835426 16835427 16835428 IR_MAESTER 4 CLS_ATK_3 CLS_FEAT_ANIMA CLS_SAVTHR_WIZ CLS_SKILL_ANIMA CLS_BFEAT_ANIMA 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X08 0X2 0 CLASS_TYPE_ANIMA_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ANIMA 50 0 1 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +45 KnightOfTheSacredSeal 16790532 16835453 16835454 16835455 16835456 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_KSS CLS_SAVTHR_FIGHT CLS_SKILL_KSS CLS_BFEAT_KSS 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X04 0X1 0 CLASS_TYPE_KNIGHT_SACRED_SEAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KSS 5 0 0 0 5 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +46 ScionOfDantalion 16790533 16835519 16835520 16835521 16835522 IR_CEREBRE 8 CLS_ATK_2 CLS_FEAT_SCION CLS_SAVTHR_CLER CLS_SKILL_SCION CLS_BFEAT_BLANK 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X00 0X0 0 CLASS_TYPE_SCION_DANTALION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCION 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +47 TenebrousApostate 16790534 16835441 16835442 16835443 16835444 IR_SHADADEPT 8 CLS_ATK_2 CLS_FEAT_TENEB CLS_SAVTHR_CLER CLS_SKILL_TENEB CLS_BFEAT_TENEB 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X08 0X2 0 CLASS_TYPE_TENEBROUS_APOSTATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TENEB 5 0 0 1 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +48 ReapingMauler 16790535 16834902 16834903 16834904 16834905 IR_MONK 10 CLS_ATK_1 CLS_FEAT_RPMLR CLS_SAVTHR_RANG CLS_SKILL_RPMLR CLS_BFEAT_RPMLR 2 **** **** 1 0 16 15 14 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_REAPING_MAULER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RPMLR 5 0 0 0 5 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +49 SereneGuardian 16790536 16834537 16834538 16834539 16834540 IR_REDAVNG 8 CLS_ATK_1 CLS_FEAT_SERGRD CLS_SAVTHR_RANG CLS_SKILL_SERGRD CLS_BFEAT_SERGRD 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X02 0X1 1 CLASS_TYPE_SERENE_GUARDIAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SERGRD 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +50 SacredPurifer 16790537 16834528 16834529 16834530 16834531 IR_MAA 8 CLS_ATK_2 CLS_FEAT_SACPUR CLS_SAVTHR_CLER CLS_SKILL_SACPUR CLS_BFEAT_SACPUR 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X08 0X2 1 CLASS_TYPE_SACPUR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SACPUR 5 0 0 1 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +51 Ocular_Adept 16790538 16789504 16789505 16789506 16789507 IR_OCULAR 6 CLS_ATK_2 CLS_FEAT_OCU CLS_SAVTHR_CLER CLS_SKILL_OCULAR CLS_BFEAT_OCU 2 CLS_SPGN_OCU **** 1 1 14 8 14 16 10 14 WIS 0X09 0X2 0 CLASS_TYPE_OCULAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OCULAR 50 0 0 0 10 2 0 **** 1 0 1 0 0 0 0 WIS Cleric 1 1 255 0 0 +52 Battlerager 16790539 16789530 16789531 16789532 16789533 IR_BTLRAGE 12 CLS_ATK_1 CLS_FEAT_BRAGE CLS_SAVTHR_FIGHT CLS_SKILL_BRAGE CLS_BFEAT_BRAGE 2 **** **** 1 0 16 15 14 10 10 10 STR 0X02 0X1 0 CLASS_TYPE_BATTLERAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BRAGE 5 0 0 0 5 0 0 cls_stat_brage **** **** **** **** **** **** **** **** **** **** **** **** **** **** +53 Mystic_Theurge 16790540 16789584 16789585 16789586 16789587 IR_MYSTIC 4 CLS_ATK_3 CLS_FEAT_MYSTIC CLS_SAVTHR_WIZ CLS_SKILL_MYSTIC CLS_BFEAT_MYSTIC 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_MYSTIC_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MYSTIC 50 0 1 1 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +54 Ninja_Spy 16790541 16789568 16789569 16789570 16789571 IR_ASASIN 8 CLS_ATK_2 CLS_FEAT_NINJA CLS_SAVTHR_MONK CLS_SKILL_NINJA CLS_BFEAT_ASASIN 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X0C 0X3 0 CLASS_TYPE_NINJA_SPY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NINJA 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +55 Samurai 16790542 16789537 16789538 16789539 16789540 IR_SAMURAI 10 CLS_ATK_1 CLS_FEAT_SAMUR CLS_SAVTHR_CLER CLS_SKILL_SAMUR CLS_BFEAT_SAMUR 4 **** **** 1 0 16 13 16 10 10 9 STR 0X05 0X1 0 CLASS_TYPE_SAMURAI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SAMUR 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +56 Warpriest 16790543 16789541 16789542 16789543 16789544 IR_CLERIC 8 CLS_ATK_1 CLS_FEAT_WARPR CLS_SAVTHR_CLER CLS_SKILL_WARPR CLS_BFEAT_WARPR 2 **** **** 1 0 10 14 14 12 16 10 WIS 0X00 0X0 0 CLASS_TYPE_WARPRIEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARPR 50 0 0 2 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +57 Spellfire_Channeler 16790544 16824664 16824665 16824666 16824667 IR_SPELLFIRE 4 CLS_ATK_3 CLS_FEAT_SPELLF CLS_SAVTHR_CLER CLS_SKILL_SPELLF CLS_BFEAT_SPELLF 2 **** **** 1 0 16 13 16 10 10 9 CON 0X00 0X0 0 CLASS_TYPE_SPELLFIRE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPELLF 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +58 Virtuoso 16790545 16828436 16828437 16828438 16828439 IR_BARD 6 CLS_ATK_3 CLS_FEAT_VIRT CLS_SAVTHR_WIZ CLS_SKILL_VIRT CLS_BFEAT_VIRT 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X00 0X0 0 CLASS_TYPE_VIRTUOSO 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_VIRT 50 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +59 Marshal 16790546 16828255 16828256 16828257 16828258 IR_MARSH 8 CLS_ATK_2 CLS_FEAT_MARSH CLS_SAVTHR_DRU CLS_SKILL_MARSH CLS_BFEAT_MARSH 4 **** **** 1 0 14 12 12 8 14 16 CHA 0X00 0X0 0 CLASS_TYPE_MARSHAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MARSH 0 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +60 Swashbuckler 16790547 16828217 16828218 16828219 16828220 IR_SWASH 10 CLS_ATK_1 CLS_FEAT_SWASH CLS_SAVTHR_FIGHT CLS_SKILL_SWASH CLS_BFEAT_SWASH 4 **** **** 1 0 12 14 12 8 16 14 DEX 0X00 0X0 0 CLASS_TYPE_SWASHBUCKLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWASH 0 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +61 Hexblade 16790548 16823462 16823463 16823464 16823465 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_HEXBL CLS_SAVTHR_CLER CLS_SKILL_HEXBL CLS_BFEAT_HEXBL 2 CLS_SPGN_HEXBL CLS_SPKN_HEXBL 1 1 14 14 14 10 12 14 CHA 0X08 0X2 0 CLASS_TYPE_HEXBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEXBL 0 1 0 0 -1 5 131 **** **** **** **** **** **** **** **** **** Hexblade **** **** **** **** **** +62 Duskblade 16790549 16824168 16824169 16824170 16824171 IR_HAVOCMAGE 8 CLS_ATK_1 CLS_FEAT_DUSKBL CLS_SAVTHR_CLER CLS_SKILL_DUSKBL CLS_BFEAT_DUSKBL 2 CLS_SPGN_DUSKBL CLS_SPKN_DUSKBL 1 1 15 12 14 10 15 10 STR 0X00 0X0 0 CLASS_TYPE_DUSKBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DUSKBL 0 1 0 0 -1 735 131 **** **** **** **** **** **** **** **** **** Duskblade **** **** **** **** **** +63 Scout 16790550 16822486 16822513 16822514 16822515 IR_ARCHER 8 CLS_ATK_2 CLS_FEAT_SCOUT CLS_SAVTHR_ROG CLS_SKILL_SCOUT CLS_BFEAT_SCOUT 8 **** **** 1 0 12 16 12 14 12 10 DEX 0X00 0X0 0 CLASS_TYPE_SCOUT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCOUT 0 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +64 Healer 16790551 16822656 16822657 16822658 16822659 IR_CBTMEDIC 8 CLS_ATK_3 CLS_FEAT_HEALER CLS_SAVTHR_CLER CLS_SKILL_HEALER CLS_BFEAT_HEALER 4 CLS_SPGN_HEALER **** 1 1 10 12 12 15 10 16 WIS 0X11 0X2 0 CLASS_TYPE_HEALER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEALER 0 1 0 0 -1 750 0 **** 1 0 0 0 0 0 0 WIS Healer 1 1 255 0 0 +65 Mage_Killer 16790552 16822219 16822220 16822221 16822222 IR_MAGEKILL 4 CLS_ATK_3 CLS_FEAT_MAGEK CLS_SAVTHR_WIZ CLS_SKILL_MAGEK CLS_BFEAT_MAGEK 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_MAGEKILLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAGEK 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +66 Harper_Mage 16790553 16822223 16822224 16822225 16822226 IEF_HARPWIZ 4 CLS_ATK_3 CLS_FEAT_HMAGE CLS_SAVTHR_WIZ CLS_SKILL_HMAGE CLS_BFEAT_HMAGE 4 **** **** 1 0 12 16 14 8 14 12 INT 0X10 0X2 0 CLASS_TYPE_HARPERMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HMAGE 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +67 Spell_Sword 16790554 16822227 16822228 16822229 16822230 IR_SPELLS 8 CLS_ATK_1 CLS_FEAT_SPELLS CLS_SAVTHR_CLER CLS_SKILL_SPELLS CLS_BFEAT_SPELLS 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_SPELLSWORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPELLS 50 0 2 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +68 Acolyte_Skin 16790555 16822237 16822238 16822239 16822240 IR_ACOLYTE 4 CLS_ATK_3 CLS_FEAT_AOTS CLS_SAVTHR_CLER CLS_SKILL_AOTS CLS_BFEAT_AOTS 2 **** **** 1 0 12 16 14 8 14 12 INT 0X08 0X2 0 CLASS_TYPE_ACOLYTE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_AOTS 50 0 2 0 10 10 0 cls_stat_aots **** **** **** **** **** **** **** **** **** **** **** **** **** **** +69 UnseenSeer 16790556 16822302 16822303 16822304 16822305 IR_BEGUIL 4 CLS_ATK_2 CLS_FEAT_UNSEER CLS_SAVTHR_WIZ CLS_SKILL_UNSEER CLS_BFEAT_UNSEER 6 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_UNSEER_SEER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UNSEER 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +70 Eldritch_Knight 16790557 16822308 16822309 16822310 16822311 IR_ELDKNI 6 CLS_ATK_1 CLS_FEAT_ELDKNI CLS_SAVTHR_FIGHT CLS_SKILL_ELDKNI CLS_BFEAT_ELDKNI 2 **** **** 1 0 14 13 14 10 14 13 INT 0X00 0X0 0 CLASS_TYPE_ELDRITCH_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ELDKNI 50 0 1 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +71 Elemental_Savant 16790558 16822312 16822313 16822314 16822315 IR_ELEMFIRE 4 CLS_ATK_3 CLS_FEAT_SAVANT CLS_SAVTHR_WIZ CLS_SKILL_SAVANT CLS_BFEAT_SAVANT 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_ELEMENTAL_SAVANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SAVANT 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +72 Factotum 16790559 16823092 16823093 16823094 16823095 IR_BEGUIL 8 CLS_ATK_2 CLS_FEAT_FACTUM CLS_SAVTHR_ROG CLS_SKILL_FACTUM CLS_BFEAT_FACTUM 6 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_FACTOTUM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FACTUM 20 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +73 CelebrantSharess 16790560 16826321 16826322 16826323 16826324 IR_HEARTW 6 CLS_ATK_3 CLS_FEAT_SHARSS CLS_SAVTHR_WIZ CLS_SKILL_SHARSS CLS_BFEAT_SHARSS 6 CLS_SPGN_SHARSS CLS_SPKN_SHARSS 1 1 12 16 14 8 14 12 CHA 0X13 0X3 0 CLASS_TYPE_CELEBRANT_SHARESS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHARSS 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** Celebrant **** **** **** **** **** +74 CultistShatteredPeak 16790561 16789654 16789655 16789656 16789657 IR_SPARCDLST 6 CLS_ATK_2 CLS_FEAT_CULTST CLS_SAVTHR_RANG CLS_SKILL_CULTST CLS_BFEAT_CULTST 6 CLS_SPGN_CULTST **** 1 1 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_CULTIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CULTST 5 0 0 0 5 64 130 **** 1 1 0 0 1 1 1 INT Cultist 1 1 255 0 0 +75 Forsaker 16790562 16847610 16847611 16847612 16847613 IC_LEGDREAD 12 CLS_ATK_1 CLS_FEAT_FORSAK CLS_SAVTHR_CLER CLS_SKILL_FORSAK CLS_BFEAT_FORSAK 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_FORSAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FORSAK 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +76 Incarnate 16790563 16836706 16836707 16836708 16836709 IR_PSION 6 CLS_ATK_3 CLS_FEAT_INCARN CLS_SAVTHR_CLER CLS_SKILL_INCARN CLS_BFEAT_INCARN 2 **** **** 1 0 10 14 14 12 16 10 INT 0X01 0X3 1 CLASS_TYPE_INCARNATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_INCARN 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +77 Soulborn 16790564 16836718 16836719 16836720 16836721 IR_SOULKNIFE 10 CLS_ATK_1 CLS_FEAT_SOULBN CLS_SAVTHR_FIGHT CLS_SKILL_SOULBN CLS_BFEAT_SOULBN 2 **** **** 1 0 16 13 16 10 10 9 STR 0X01 0X3 0 CLASS_TYPE_SOULBORN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULBN 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +78 Totemist 16790565 16836722 16836723 16836724 16836725 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_TOTEM CLS_SAVTHR_RANG CLS_SKILL_TOTEM CLS_BFEAT_TOTEM 4 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_TOTEMIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOTEM 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +79 Beguiler 16790566 16789870 16789871 16789872 16789873 IR_BEGUIL 6 CLS_ATK_3 CLS_FEAT_BEGUIL CLS_SAVTHR_WIZ CLS_SKILL_BEGUIL CLS_BFEAT_BEGUIL 6 CLS_SPGN_BEGUIL CLS_SPKN_BEGUIL 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_BEGUILER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEGUIL 20 1 0 0 -1 705 130 **** **** **** **** **** **** **** **** **** Beguiler **** **** **** **** **** +80 Duelist 16790567 16822716 16822717 16822718 16822719 IR_DUEL 10 CLS_ATK_1 CLS_FEAT_DUEL CLS_SAVTHR_ROG CLS_SKILL_DUEL CLS_BFEAT_DUEL 4 **** **** 1 0 14 16 14 8 14 10 DEX 0X00 0X0 0 CLASS_TYPE_DUELIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DUEL 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +81 Hierophant 16790568 16822744 16822745 16822746 16822747 IR_HIERO 8 CLS_ATK_2 CLS_FEAT_HIERO CLS_SAVTHR_CLER CLS_SKILL_HIERO CLS_BFEAT_HIERO 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_HIEROPHANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HIERO 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +82 RedAvenger 16790569 16822765 16822766 16822767 16822768 IR_REDAVNG 8 CLS_ATK_2 CLS_FEAT_REDAV CLS_SAVTHR_MONK CLS_SKILL_REDAV CLS_BFEAT_REDAV 4 **** **** 1 0 14 14 14 15 10 10 DEX 0X00 0X0 0 CLASS_TYPE_RED_AVENGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_REDAV 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +83 KnightOfTheChalice 16790570 16822787 16822788 16822789 16822790 IR_CHALICE 12 CLS_ATK_1 CLS_FEAT_KCHAL CLS_SAVTHR_FIGHT CLS_SKILL_KCHAL CLS_BFEAT_KCHAL 2 CLS_SPGN_KCHAL **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_KNIGHT_CHALICE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KCHAL 50 0 0 0 10 6 0 **** 1 0 0 0 0 0 0 WIS Chalice 1 1 255 0 0 +84 Hathran 16790571 16825132 16825133 16825134 16825135 IR_CLERIC 4 CLS_ATK_3 CLS_FEAT_HATH CLS_SAVTHR_CLER CLS_SKILL_HATH CLS_BFEAT_HATH 2 **** **** 1 0 8 14 12 16 14 12 WIS 0X14 0X3 0 CLASS_TYPE_HATHRAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HATH 50 0 2 2 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +85 IronsoulForgemaster 16790572 16837815 16837816 16837817 16837818 IR_DWDEF 8 CLS_ATK_2 CLS_FEAT_IRNFRG CLS_SAVTHR_CLER CLS_SKILL_IRNFRG CLS_BFEAT_IRNFRG 4 **** **** 1 0 16 12 12 14 12 10 STR 0X10 0X2 0 CLASS_TYPE_IRONSOUL_FORGEMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IRNFRG 50 0 0 0 10 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +86 Stormlord 16790573 16823307 16823308 16823309 16823310 IR_STORMLORD 8 CLS_ATK_2 CLS_FEAT_STORML CLS_SAVTHR_CLER CLS_SKILL_STORML CLS_BFEAT_STORML 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X0A 0X3 0 CLASS_TYPE_STORMLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_STORML 50 0 0 1 10 108 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +87 HeartWarder 16790574 16822916 16822917 16822918 16822919 IR_HEARTW 4 CLS_ATK_2 CLS_FEAT_HEARTW CLS_SAVTHR_CLER CLS_SKILL_HEARTW CLS_BFEAT_HEARTW 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X13 0X3 0 CLASS_TYPE_HEARTWARDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEARTW 50 0 0 1 10 108 0 cls_stat_heartw **** **** **** **** **** **** **** **** **** **** **** **** **** **** +88 FistRaziel 16790575 16823311 16823312 16823313 16823314 IR_PALADIN 10 CLS_ATK_1 CLS_FEAT_FISTRA CLS_SAVTHR_PAL CLS_SKILL_FISTRA CLS_BFEAT_FISTRA 2 **** **** 1 0 16 10 14 12 10 14 CHA 0X15 0X3 0 CLASS_TYPE_FISTRAZIEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FISTRA 50 0 0 1 10 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +89 VassalOfBahamut 16790576 16823216 16823217 16823218 16823219 IR_VASSAL 10 CLS_ATK_1 CLS_FEAT_VASSAL CLS_SAVTHR_PAL CLS_SKILL_VASSAL CLS_BFEAT_VASSAL 2 CLS_SPGN_VASSAL **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_VASSAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VASSAL 50 0 0 0 10 6 0 **** 1 0 0 0 0 0 0 WIS Bahamut 1 1 255 0 0 +90 Lich 16790577 16823128 16823128 16823129 16823127 IR_PALEMA 4 CLS_ATK_4 CLS_FEAT_LICH CLS_SAVTHR_LICH CLS_SKILL_WIZ CLS_BFEAT_LICH 0 **** **** 1 0 13 13 13 13 13 13 INT 0X08 0X2 0 CLASS_TYPE_LICH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LICH 10 0 0 0 4 10 0 cls_stat_lich **** **** **** **** **** **** **** **** **** **** **** **** **** **** +91 PnPShifter 16790578 16824335 9027 9028 16824370 IR_SHIFTR 8 CLS_ATK_2 CLS_FEAT_PNPSFR CLS_SAVTHR_WILD CLS_SKILL_SHIFTR CLS_BFEAT_SHIFTR 4 **** **** 1 0 12 16 14 8 14 12 WIS 0X00 0X0 0 CLASS_TYPE_PNP_SHIFTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PNPSFR 50 0 0 0 10 108 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +92 ChampionCorellon 16790579 16828364 16828365 16828387 16828388 IR_COC 10 CLS_ATK_1 CLS_FEAT_COC CLS_SAVTHR_CLER CLS_SKILL_COC CLS_BFEAT_COC 2 **** **** 1 0 14 16 14 10 10 12 DEX 0X10 0X2 0 CLASS_TYPE_COC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_COC 50 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +93 SublimeChord 16790580 16829452 16829453 16829454 16829455 IR_X1_HARPER 6 CLS_ATK_3 CLS_FEAT_SCHORD CLS_SAVTHR_WIZ CLS_SKILL_SCHORD CLS_BFEAT_SCHORD 4 CLS_SPGN_SCHORD CLS_SPKN_SCHORD 1 1 10 14 12 10 14 16 CHA 0X00 0X0 0 CLASS_TYPE_SUBLIME_CHORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCHORD 50 0 0 0 10 46 131 **** **** **** **** **** **** **** **** **** SublimeCh **** **** **** **** **** +94 Artificer 16790581 16827101 16827102 16827103 16827104 **** 6 CLS_ATK_2 CLS_FEAT_ARTI CLS_SAVTHR_WIZ CLS_SKILL_ARTI CLS_BFEAT_ARTI 4 **** **** 0 0 10 14 12 10 16 14 CHA 0X00 0X0 0 CLASS_TYPE_ARTIFICER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARTI 0 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +95 Arcane_Duelist 16790582 16823520 16823521 16823522 16823523 IR_SPARCDLST 8 CLS_ATK_3 CLS_FEAT_ADST CLS_SAVTHR_BARD CLS_SKILL_ADST CLS_BFEAT_ADST 4 **** **** 1 0 12 16 14 8 14 12 CHA 0X00 0X0 0 CLASS_TYPE_ARCANE_DUELIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ADST 50 0 0 0 10 **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +96 ForceMissileMage 16790583 16836426 16836427 16836428 16836429 IR_HAVOCMAGE 4 CLS_ATK_3 CLS_FEAT_FMM CLS_SAVTHR_ROG CLS_SKILL_FMM CLS_BFEAT_FMM 2 **** **** 1 0 12 14 14 10 12 15 INT 0X00 0X0 0 CLASS_TYPE_FMM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FMM 5 0 1 0 5 31 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +97 WildMage 16790584 16836416 16836417 16836418 16836419 IR_WILDER 4 CLS_ATK_3 CLS_FEAT_WILDMG CLS_SAVTHR_ROG CLS_SKILL_WILDMG CLS_BFEAT_WILDMG 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X04 0X0 0 CLASS_TYPE_WILD_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WILDMG 50 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +98 Shadowsmith 16790585 16847414 16847415 16847416 16847417 IR_TEMPUS 8 CLS_ATK_1 CLS_FEAT_SHDSMT CLS_SAVTHR_ROG CLS_SKILL_SHDSMT CLS_BFEAT_SHDSMT 6 **** **** 1 0 14 13 14 10 14 13 INT 0x00 0x0 0 CLASS_TYPE_SHADOWSMITH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDSMT 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +99 Abjurant_Champion 16790586 16847652 16847653 16847654 16847655 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_ABCHAM CLS_SAVTHR_WIZ CLS_SKILL_ABCHAM CLS_BFEAT_ABCHAM 2 **** **** 1 0 14 13 14 10 14 13 INT 0X00 0X0 0 CLASS_TYPE_ABJURANT_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ABCHAM 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +100 Archmage 16790587 16825000 16825001 16825002 16825003 IR_EPICSPELL 4 CLS_ATK_3 CLS_FEAT_ARCH CLS_SAVTHR_WIZ CLS_SKILL_ARCH CLS_BFEAT_ARCH 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_ARCHMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCH 5 0 2 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +101 Oozemaster 16790588 16825036 16825037 16825038 16825039 IR_GENSUMMON 8 CLS_ATK_2 CLS_FEAT_OOZE CLS_SAVTHR_FIGHT CLS_SKILL_OOZE CLS_BFEAT_OOZE 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_OOZEMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOZEM 50 0 2 2 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +102 Psychic_Rogue 16790589 16835172 16835173 16835174 16835175 IR_PSYWARRIOR 6 CLS_ATK_2 CLS_FEAT_PSYROG CLS_SAVTHR_ROG CLS_SKILL_PSYROG CLS_BFEAT_PSYROG 6 **** **** 1 0 14 12 14 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_PSYROG 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYROG 20 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +103 Spelldancer 16790590 16835157 16835158 16835159 16835160 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_SPLDNC CLS_SAVTHR_BARD CLS_SKILL_SPLDNC CLS_BFEAT_SPLDNC 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_SPELLDANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPLDNC 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +104 KnightoftheWeave 16790591 16835149 16835150 16835151 16835152 IR_MAGEKILL 8 CLS_ATK_2 CLS_FEAT_KNGTWV CLS_SAVTHR_DRU CLS_SKILL_KNGTWV CLS_BFEAT_KNGTWV 2 CLS_SPGN_KNGTWV CLS_SPKN_KNGTWV 1 1 12 16 14 8 14 12 INT 0X10 0X2 0 CLASS_TYPE_KNIGHT_WEAVE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KNGTWV 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** KnightWeave **** **** **** **** **** +105 Drow_Judicator 16790592 16822863 16822864 16822865 16822866 IR_JUDICATOR 8 CLS_ATK_1 CLS_FEAT_DROWJ CLS_SAVTHR_FIGHT CLS_SKILL_DROWJ CLS_BFEAT_DROWJ 2 **** **** 1 0 16 12 16 10 10 10 STR 0X09 0X2 0 CLASS_TYPE_JUDICATOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DROWJ 50 0 3 3 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +106 ShadowbaneInquisitor 16790593 16835121 16835122 16835123 16835124 IR_MAA 10 CLS_ATK_1 CLS_FEAT_SDHINQ CLS_SAVTHR_BARD CLS_SKILL_SDHINQ CLS_BFEAT_SDHINQ 4 **** **** 1 0 12 12 12 15 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SHADOWBANE_INQUISITOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SDHINQ 50 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +107 ShadowbaneStalker 16790594 16835125 16835126 16835127 16835128 IR_TFSHAD 8 CLS_ATK_2 CLS_FEAT_SDHSTK CLS_SAVTHR_BARD CLS_SKILL_SDHSTK CLS_BFEAT_SDHSTK 6 **** **** 1 0 12 12 12 15 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SHADOWBANE_STALKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SDHSTK 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +108 WayfarerGuide 16790595 16835113 16835114 16835115 16835116 IR_MAESTER 6 CLS_ATK_3 CLS_FEAT_WAYFAR CLS_SAVTHR_WIZ CLS_SKILL_WAYFAR CLS_BFEAT_WAYFAR 2 **** **** 1 0 12 16 14 8 14 12 INT 0X14 0X3 0 CLASS_TYPE_WAR_WIZARD_OF_CORMYR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WAYFAR 3 0 2 0 3 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +109 Umbral_Disciple 16790596 16837827 16837828 16837829 16837830 IR_ASASIN 6 CLS_ATK_2 CLS_FEAT_UMBRAL CLS_SAVTHR_BARD CLS_SKILL_UMBRAL CLS_BFEAT_UMBRAL 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_UMBRAL_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UMBRAL 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +110 Alienist 16790597 16789710 16789711 16789712 16789713 IR_ALIEN 4 CLS_ATK_3 CLS_FEAT_ALIEN CLS_SAVTHR_WIZ CLS_SKILL_ALIEN CLS_BFEAT_ALIEN 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ALIENIST 1 1 1 2 2 4 6 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ALIEN 50 0 1 0 10 10 0 cls_stat_alien **** **** **** **** **** **** **** **** **** **** **** **** **** **** +111 BlackBloodCultist 16790598 16823068 16823077 16823078 16823079 IR_WILDWOLF 12 CLS_ATK_2 CLS_FEAT_BBC CLS_SAVTHR_BARB CLS_SKILL_BBC CLS_BFEAT_BBC 4 **** **** 1 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_BLACK_BLOOD_CULTIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BBC 50 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +112 Warlock 16790599 16827934 16827935 16827936 16827937 IR_WARLOCK 6 CLS_ATK_2 CLS_FEAT_WARLOK CLS_SAVTHR_WIZ CLS_SKILL_WARLOK CLS_BFEAT_WARLOK 2 **** **** 1 1 12 14 14 10 12 15 CHA 0X14 0X3 1 CLASS_TYPE_WARLOCK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARLOK 0 1 0 0 -1 865 0 **** **** **** **** **** **** **** **** **** Warlock **** **** **** **** **** +113 Fochlucan_Lyrist 16852476 16825142 16825143 16825144 16825145 IR_DRUID 6 CLS_ATK_1 CLS_FEAT_FOCLYR CLS_SAVTHR_BARD CLS_SKILL_FOCLYR CLS_BFEAT_FOCLYR 6 **** **** 1 0 10 12 12 14 12 16 CHA 0X02 0X0 0 CLASS_TYPE_FOCHLUCAN_LYRIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FOCLYR 50 0 1 1 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +114 Dragonsong_Lyrist 16790600 16825459 16825460 16825461 16825462 IR_DRSLYR 6 CLS_ATK_2 CLS_FEAT_DRSLYR CLS_SAVTHR_BARD CLS_SKILL_DRSLYR CLS_BFEAT_DRSLYR 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X10 0X2 0 CLASS_TYPE_DRAGONSONG_LYRIST 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_DSLYR 5 0 2 0 5 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +115 SpinemeldWarrior 16790601 16836998 16836999 16837000 16837001 IR_TEMPEST 10 CLS_ATK_1 CLS_FEAT_SPNMLD CLS_SAVTHR_FIGHT CLS_SKILL_SPNMLD CLS_BFEAT_SPNMLD 4 **** **** 1 0 16 14 14 14 10 8 STR 0X02 0X1 1 CLASS_TYPE_SPINEMELD_WARRIOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPNMLD 50 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +116 Nightshade 16790602 16825413 16825414 16825415 16825416 IR_ASASIN 8 CLS_ATK_2 CLS_FEAT_NIGHTS CLS_SAVTHR_ROG CLS_SKILL_NIGHTS CLS_BFEAT_NIGHTS 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X09 0X2 0 CLASS_TYPE_NIGHTSHADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NIGHTS 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +117 ShadowAdept 16790603 16825409 16825410 16825411 16825412 IR_SHADADEPT 4 CLS_ATK_3 CLS_FEAT_SHADEP CLS_SAVTHR_WIZ CLS_SKILL_SHADEP CLS_BFEAT_SHADEP 2 **** **** 1 0 14 16 14 8 14 10 DEX 0X08 0X2 0 CLASS_TYPE_SHADOW_ADEPT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHADEP 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +118 Soldier_of_Light 16790604 16825874 16825875 16825876 16825877 IR_PALADIN 10 CLS_ATK_1 CLS_FEAT_SOL CLS_SAVTHR_PAL CLS_SKILL_SOL CLS_BFEAT_SOL 2 CLS_SPGN_SOL **** 1 1 15 9 14 13 10 15 WIS 0X16 0X3 0 CLASS_TYPE_SOLDIER_OF_LIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOL 50 0 0 0 10 6 0 **** 1 0 0 0 0 0 0 WIS SoLight 1 1 255 0 0 +119 SapphireHierarch 16790605 16837004 16837005 16837006 16837007 IC_HOSPITALER 6 CLS_ATK_3 CLS_FEAT_SAPPHR CLS_SAVTHR_WIZ CLS_SKILL_SAPPHR CLS_BFEAT_SAPPHR 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X02 0X1 1 CLASS_TYPE_SAPPHIRE_HIERARCH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SAPPHR 50 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +120 Telflammar_Shadowlord 16790606 16822992 16822993 16822994 16822995 IR_TFSHAD 6 CLS_ATK_2 CLS_FEAT_TFSHAD CLS_SAVTHR_ROG CLS_SKILL_TFSHAD CLS_BFEAT_TFSHAD 4 CLS_SPGN_TFSHAD **** 1 1 12 16 14 10 14 10 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TFSHAD 6 0 0 0 6 8 128 **** 1 1 0 0 1 1 1 INT Telflammar 1 1 255 0 0 +121 BondedSummoner 16790607 16823012 16823013 16823014 16823015 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_BONDED CLS_SAVTHR_WIZ CLS_SKILL_BONDED CLS_BFEAT_BONDED 2 **** **** 1 0 12 14 12 12 16 10 DEX 0X00 0X0 0 CLASS_TYPE_BONDED_SUMMONNER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BONDED 50 0 2 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +122 Initiate_Draconic 16790608 16826056 16826057 16826058 16826059 IR_IODM 8 CLS_ATK_2 CLS_FEAT_INIDRA CLS_SAVTHR_MONK CLS_SKILL_INIDRA CLS_BFEAT_INIDRA 4 **** **** 1 0 14 14 14 15 10 10 DEX 0X00 0X0 0 CLASS_TYPE_INITIATE_DRACONIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_INIDRA 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +123 Battleguard_Tempus 16790609 16822940 16822941 16822942 16822943 IR_TEMPUS 10 CLS_ATK_1 CLS_FEAT_TEMPUS CLS_SAVTHR_PAL CLS_SKILL_TEMPUS CLS_BFEAT_TEMPUS 2 **** **** 1 0 14 12 12 14 12 14 WIS 0X02 0X1 0 CLASS_TYPE_TEMPUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TEMPUS 50 0 0 2 10 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +124 Bladesinger 16790610 16825986 16825987 16825988 16825989 IR_SPELLS 8 CLS_ATK_1 CLS_FEAT_BLADES CLS_SAVTHR_BARD CLS_SKILL_BLADES CLS_BFEAT_BLADES 2 **** **** 1 0 14 16 14 8 14 10 DEX 0X00 0X0 0 CLASS_TYPE_BLADESINGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLADES 50 0 2 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +125 Soulcaster 16790611 16837012 16837013 16837014 16837015 IR_MYSTIC 4 CLS_ATK_3 CLS_FEAT_SOULC CLS_SAVTHR_WIZ CLS_SKILL_SOULC CLS_BFEAT_SOULC 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_SOULCASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULC 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +126 Sacred_Fist 16790612 16825367 16825368 16825369 16825370 IR_SACREDFIST 8 CLS_ATK_1 CLS_FEAT_SACFIS CLS_SAVTHR_WILD CLS_SKILL_SACFIS CLS_BFEAT_SACFIS 4 **** **** 1 0 14 14 12 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_SACREDFIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SACFIS 50 0 0 1 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +127 Legendary_Dreadnought 16790613 16826086 16826087 16826088 16826089 IC_LEGDREAD 12 CLS_ATK_1 CLS_FEAT_LGDR CLS_SAVTHR_FIGHT CLS_SKILL_LGDR CLS_BFEAT_LGDR 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_LEGENDARY_DREADNOUGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LGDR 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +128 Disciple_of_Baalzebul 16790614 16826094 16826095 16826096 16826097 IC_BAALZEBUL 6 CLS_ATK_2 CLS_FEAT_BAAL CLS_SAVTHR_BARD CLS_SKILL_BAAL CLS_BFEAT_BAAL 6 **** **** 1 0 12 14 14 10 12 15 CHA 0X09 0X2 0 CLASS_TYPE_DISC_BAALZEBUL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BAAL 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +129 Mighty_Contender_of_Kord 16790615 16824935 16824936 16824937 16824938 IC_LEGDREAD 10 CLS_ATK_2 CLS_FEAT_KORD CLS_SAVTHR_CLER CLS_SKILL_KORD CLS_BFEAT_KORD 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_MIGHTY_CONTENDER_KORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KORD 50 0 0 1 10 4 0 cls_stat_kord **** **** **** **** **** **** **** **** **** **** **** **** **** **** +130 Iaijutsu_Master 16790616 16826114 16826115 16826116 16826117 IC_IAIJUTSU 10 CLS_ATK_1 CLS_FEAT_IAIJ CLS_SAVTHR_ROG CLS_SKILL_IAIJ CLS_BFEAT_IAIJ 4 **** **** 1 0 16 13 16 10 10 9 CHA 0X05 0X1 0 CLASS_TYPE_IAIJUTSU_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IAIJ 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +131 Disciple_of_Dispater 16790617 16826136 16826137 16826138 16826139 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_DISP CLS_SAVTHR_MONK CLS_SKILL_DISP CLS_BFEAT_DISP 4 **** **** 1 0 16 13 16 10 10 9 CON 0X09 0X2 0 CLASS_TYPE_DISPATER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DISP 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +132 CW_Samurai 16790618 16826168 16826169 16826170 16826171 IR_SAMURAI 10 CLS_ATK_1 CLS_FEAT_CWSM CLS_SAVTHR_FIGHT CLS_SKILL_SAMUR CLS_BFEAT_CWSM 2 **** **** 1 0 16 13 16 10 10 9 STR 0X05 0X1 0 CLASS_TYPE_CW_SAMURAI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CWSM 20 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +133 Ravager 16790619 16826156 16826157 16826158 16826159 IC_RAVA 10 CLS_ATK_1 CLS_FEAT_RAVA CLS_SAVTHR_FIGHT CLS_SKILL_RAVA CLS_BFEAT_RAVA 2 **** **** 1 0 16 13 16 10 10 9 STR 0X0A 0X3 0 CLASS_TYPE_RAVAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RAVA 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +134 Runescarred_Berserker 16790620 16826187 16826188 16826189 16826190 IC_RUNE 10 CLS_ATK_1 CLS_FEAT_RUNE CLS_SAVTHR_FIGHT CLS_SKILL_RUNE CLS_BFEAT_RUNE 4 **** **** 1 0 16 13 16 10 10 9 STR 0X02 0X1 0 CLASS_TYPE_RUNESCARRED 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RUNE 50 0 0 0 10 4 0 cls_stat_rune **** **** **** **** **** **** **** **** **** **** **** **** **** **** +135 Talontar_Blightlord 16790621 16824917 16824918 16824919 16824920 IR_CLERIC 8 CLS_ATK_2 CLS_FEAT_BLTL CLS_SAVTHR_CLER CLS_SKILL_BLTL CLS_BFEAT_BLTL 2 **** **** 1 0 16 13 16 10 10 9 WIS 0X09 0X2 0 CLASS_TYPE_BLIGHTLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLTL 50 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +136 Shadowcaster 16790622 16847394 16847395 16847396 16847397 IR_SHADADEPT 6 CLS_ATK_3 CLS_FEAT_SHDCST CLS_SAVTHR_CLER CLS_SKILL_SHDCST CLS_BFEAT_SHDCST 2 **** **** 1 0 10 10 14 12 16 14 CHA 0x00 0x0 0 CLASS_TYPE_SHADOWCASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDCST 20 1 0 0 -1 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +137 ChildOfNight 16790623 16847398 16847399 16847400 16847401 IR_X1_SHADOW 6 CLS_ATK_3 CLS_FEAT_CHLDNT CLS_SAVTHR_WIZ CLS_SKILL_CHLDNT CLS_BFEAT_CHLDNT 2 **** **** 1 0 10 10 14 12 16 14 CHA 0x00 0x0 0 CLASS_TYPE_CHILD_OF_NIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CHLDNT 50 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +138 MasterofShadow 16790624 16847402 16847403 16847404 16847405 IR_MYSTIC 8 CLS_ATK_3 CLS_FEAT_MSTRSH CLS_SAVTHR_CLER CLS_SKILL_MSTRSH CLS_BFEAT_MSTRSH 2 **** **** 1 0 12 14 14 10 12 15 CHA 0x00 0x0 0 CLASS_TYPE_MASTER_OF_SHADOW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MSTRSH 50 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +139 Noctumancer 16790625 16847406 16847407 16847408 16847409 IR_NOCTM 4 CLS_ATK_3 CLS_FEAT_NOCTM CLS_SAVTHR_CLER CLS_SKILL_NOCTM CLS_BFEAT_NOCTM 2 **** **** 1 0 12 14 14 10 12 15 CHA 0x00 0x0 **** CLASS_TYPE_NOCTUMANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NOCTM 50 0 1 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +140 Totem_Rager 16790626 16825977 16825978 16825979 16825980 IR_PSYWARRIOR 10 CLS_ATK_2 CLS_FEAT_TOTRAG CLS_SAVTHR_RANG CLS_SKILL_TOTRAG CLS_BFEAT_TOTRAG 4 **** **** 1 0 16 15 14 10 10 10 CON 0X00 0X0 0 CLASS_TYPE_TOTEM_RAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOTRAG 50 0 0 0 10 142 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +141 Ninja_CA 16790627 16832316 16832317 16832318 16832319 IR_NINJCA 6 CLS_ATK_2 CLS_FEAT_NINJCA CLS_SAVTHR_ROG CLS_SKILL_NINJCA CLS_BFEAT_NINJCA 6 **** **** 1 0 12 16 12 14 14 8 DEX 0X00 0X0 0 CLASS_TYPE_NINJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NINJCA 0 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +142 Shadowblade 16790628 16847410 16847411 16847412 16847413 IR_SHADOWBLADE 8 CLS_ATK_2 CLS_FEAT_SHDBLD CLS_SAVTHR_FIGHT CLS_SKILL_SHDBLD CLS_BFEAT_SHDBLD 2 **** **** 1 0 14 15 14 12 12 10 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDBLD 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +143 DragonShaman 16790629 16832703 16832704 16832705 16832706 IR_DRAGSHMN 10 CLS_ATK_2 CLS_FEAT_DRGSHM CLS_SAVTHR_CLER CLS_SKILL_DRGSHM CLS_BFEAT_DRGSHM 2 **** **** 1 0 12 14 16 10 14 10 CON 0X00 0X0 0 CLASS_TYPE_DRAGON_SHAMAN 1 1 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_DRGSHM 0 1 0 0 -1 725 0 cls_stat_drgshm **** **** **** **** **** **** **** **** **** **** **** **** **** **** +144 Dragonfire_Adept 16790630 16832914 16832915 16832916 16832917 IR_DRGNFIREADPT 8 CLS_ATK_3 CLS_FEAT_DFA CLS_SAVTHR_CLER CLS_SKILL_DFA CLS_BFEAT_DFA 4 **** **** 1 1 10 14 16 12 10 14 CON 0X00 0X0 0 CLASS_TYPE_DRAGONFIRE_ADEPT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DFA 50 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** Dragonfire **** **** **** **** **** +145 Psion 16790631 16823566 16823567 16823568 16823569 IR_PSION 4 CLS_ATK_3 CLS_FEAT_PSION CLS_SAVTHR_WIZ CLS_SKILL_PSION CLS_BFEAT_PSION 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_PSION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSION 0 1 0 0 -1 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +146 Psychic_Warrior 16790632 16823570 16823571 16823572 16823573 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_PSYWAR CLS_SAVTHR_FIGHT CLS_SKILL_PSYWAR CLS_BFEAT_PSYWAR 2 **** **** 1 0 14 12 14 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_PSYWAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYWAR 0 1 0 0 -1 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +147 Soulknife 16790633 16823574 16823575 16823576 16823577 IR_SOULKNIFE 10 CLS_ATK_2 CLS_FEAT_SOULKN CLS_SAVTHR_BARD CLS_SKILL_SOULKN CLS_BFEAT_SOULKN 4 **** **** 1 0 16 15 14 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SOULKNIFE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULKN 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +148 Wilder 16790634 16823578 16823579 16823580 16823581 IR_WILDER 6 CLS_ATK_2 CLS_FEAT_WILDER CLS_SAVTHR_WIZ CLS_SKILL_WILDER CLS_BFEAT_WILDER 4 **** **** 1 0 15 9 14 13 10 15 CHA 0X00 0X0 0 CLASS_TYPE_WILDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WILDER 0 1 0 0 -1 9 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +149 Thayan_Knight 16790635 16823506 16823507 16823508 16823509 IR_TKNIGHT 10 CLS_ATK_1 CLS_FEAT_THAYKT CLS_SAVTHR_FIGHT CLS_SKILL_THAYKT CLS_BFEAT_THAYKT 2 **** **** 1 0 12 16 14 8 14 12 STR 0X08 0X2 0 CLASS_TYPE_THAYAN_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_THAYKT 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +150 Red_Wizard 16790636 16822370 16822371 16822372 16822373 RED_WIZARD_PRC 4 CLS_ATK_3 CLS_FEAT_REDWIZ CLS_SAVTHR_WIZ CLS_SKILL_REDWIZ CLS_BFEAT_REDWIZ 2 **** **** 1 0 12 16 14 8 14 12 INT 0X08 0X2 0 CLASS_TYPE_RED_WIZARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_REDWIZ 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +151 True_Necro 16790637 16822374 16822375 16822376 16822377 ir_truenecro 4 CLS_ATK_3 CLS_FEAT_TNECRO CLS_SAVTHR_WIZ CLS_SKILL_TNECRO CLS_BFEAT_TNECRO 2 **** **** 1 0 12 16 14 8 14 12 INT 0x08 0x3 0 CLASS_TYPE_TNECRO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TNECRO 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +152 Arcane_Trickster 16790638 16822378 16822379 16822380 16822381 IR_MAGEKILL 4 CLS_ATK_3 CLS_FEAT_ARCTRK CLS_SAVTHR_BARD CLS_SKILL_ARCTRK CLS_BFEAT_ARCTRK 4 **** **** 1 0 12 16 14 8 14 12 INT 0X02 0X1 0 CLASS_TYPE_ARCTRICK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCTRK 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +153 Blood_Magus 16777216 16822382 16822383 16822384 16822385 IR_BLMAGUS 6 CLS_ATK_3 CLS_FEAT_BLMAGUS CLS_SAVTHR_FIGHT CLS_SKILL_BLMAGU CLS_BFEAT_BLMAGU 2 **** **** 0 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_BLOOD_MAGUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLMAGUS 50 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +154 Diabolist 16790639 16822386 16822387 16822388 16822389 IR_ACOLYTE 4 CLS_ATK_3 CLS_FEAT_DIABOL CLS_SAVTHR_WIZ CLS_SKILL_DIABOL CLS_BFEAT_DIABOL 2 **** **** 1 0 12 16 14 8 14 12 INT 0X0D 0X3 0 CLASS_TYPE_DIABOLIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIABOL 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +155 Fist_Hextor 16790640 16822390 16822391 16822392 16822393 IR_HEXTOR 10 CLS_ATK_1 CLS_FEAT_HEXTOR CLS_SAVTHR_FIGHT CLS_SKILL_HEXTOR CLS_BFEAT_HEXTOR 2 **** **** 1 0 12 16 14 8 14 12 STR 0X0C 0X3 0 CLASS_TYPE_HEXTOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEXTOR 50 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +156 IncandescentChampion 16790641 16837917 16837918 16837919 16837920 IR_TEMPEST 10 CLS_ATK_2 CLS_FEAT_INCAND CLS_SAVTHR_WIZ CLS_SKILL_INCAND CLS_BFEAT_INCAND 2 **** **** 1 0 16 14 14 14 10 8 STR 0X08 0X2 1 CLASS_TYPE_INCANDESCENT_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_INCAND 50 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +157 JusticeOfWealdAndWoe 16790642 16847276 16847277 16847278 16847279 IR_JUSTWW 8 CLS_ATK_2 CLS_FEAT_JUSTWW CLS_SAVTHR_WILD CLS_SKILL_JUSTWW CLS_BFEAT_JUSTWW 4 CLS_SPGN_JUSTWW CLS_SPKN_JUSTWW 1 1 12 16 14 8 14 12 DEX 0x00 0x0 0 CLASS_TYPE_JUSTICEWW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_JUSTWW 50 0 0 0 10 4 3 **** **** **** **** **** **** **** **** **** Justiceww **** **** **** **** **** +158 AcolyteOfTheEgo 16790643 16834483 16834484 16834484 16834486 ir_acolyteego 8 CLS_ATK_1 CLS_FEAT_ACEGO CLS_SAVTHR_FIGHT CLS_SKILL_ACEGO CLS_BFEAT_ACEGO 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X00 0X0 0 CLASS_TYPE_ACOLYTE_EGO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ACEGO 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +159 Peerless_Archer 16790644 16822520 16822521 16822522 16822523 IR_ARCHER 10 CLS_ATK_1 CLS_FEAT_PARCH CLS_SAVTHR_FIGHT CLS_SKILL_PARCH CLS_BFEAT_PARCH 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_PEERLESS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PARCH 50 0 0 0 10 55 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +160 Lasher 16790645 16824616 16824617 16824618 16824619 IR_LASHER 10 CLS_ATK_1 CLS_FEAT_LASHER CLS_SAVTHR_ROG CLS_SKILL_LASHER CLS_BFEAT_LASHER 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_LASHER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LASHER 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +161 Bow_Initiate 16790646 16826374 16826375 16826376 16826377 IR_OOTBI 8 CLS_ATK_1 CLS_FEAT_OOTBI CLS_SAVTHR_BARD CLS_SKILL_OOTBI CLS_BFEAT_OOTBI 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ORDER_BOW_INITIATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOTBI 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +162 Hellfire_Warlock 16790647 16789986 16789987 16789988 16789989 IR_HFWRLK 6 CLS_ATK_2 CLS_FEAT_HFWRLK CLS_SAVTHR_WIZ CLS_SKILL_HFWRLK CLS_BFEAT_HFWRLK 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X00 0X0 0 CLASS_TYPE_HELLFIRE_WARLOCK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HFWRLK 3 0 0 0 3 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +163 Thrall_of_Orcus 16790648 16823320 16823321 16823322 16823323 IR_ORCUS 8 CLS_ATK_1 CLS_FEAT_ORCUS CLS_SAVTHR_CLER CLS_SKILL_ORCUS CLS_BFEAT_ORCUS 2 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_ORCUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ORCUS 50 0 0 2 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +164 Plant 16852499 16833077 16833078 16833079 16833080 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 10 15 11 15 14 18 STR 0X00 0X0 0 CLASS_TYPE_PLANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PLANT 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +165 BlackFlame_Zealot 16790650 16823356 16823357 16823358 16823359 IR_BFZ 6 CLS_ATK_2 CLS_FEAT_BFZ CLS_SAVTHR_BARD CLS_SKILL_BFZ CLS_BFEAT_BFZ 4 **** **** 1 0 12 16 14 8 14 12 WIS 0X08 0X2 0 CLASS_TYPE_BFZ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BFZ 50 0 0 2 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +166 ShiningBlade 16790651 16823444 16823445 16823446 16823447 IR_HEIRONEOUS 10 CLS_ATK_1 CLS_FEAT_SBHEIR CLS_SAVTHR_CLER CLS_SKILL_SBHEIR CLS_BFEAT_SBHEIR 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SHINING_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SBHEIR 50 0 0 2 10 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +167 KnightMiddleCircle 16790652 16822468 16822469 16822470 16822471 IR_KOTMC 10 CLS_ATK_1 CLS_FEAT_KOTMC CLS_SAVTHR_WIZ CLS_SKILL_KOTMC CLS_BFEAT_KOTMC 4 CLS_SPGN_KOTMC **** 1 1 15 9 14 13 10 15 WIS 0X11 0X2 0 CLASS_TYPE_KNIGHT_MIDDLECIRCLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KOTMC 50 0 0 0 10 6 0 **** 1 0 0 0 0 0 0 WIS MiddleCircle 1 1 255 0 0 +168 Maester 16790653 16824556 16824557 16824558 16824559 IR_MAESTER 4 CLS_ATK_3 CLS_FEAT_MAESTR CLS_SAVTHR_WIZ CLS_SKILL_MAESTR CLS_BFEAT_MAESTR 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_MAESTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAESTR 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +169 Combat_Medic 16790654 16825644 16825645 16825646 16825647 IR_CBTMEDIC 6 CLS_ATK_3 CLS_FEAT_CBTMED CLS_SAVTHR_ROG CLS_SKILL_CBTMED CLS_BFEAT_CBTMED 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X10 0X2 0 CLASS_TYPE_COMBAT_MEDIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CBTMED 5 0 0 1 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +170 Ollam 16790655 16824982 16824983 16824984 16824985 IR_OLLAM 8 CLS_ATK_3 CLS_FEAT_OLLAM CLS_SAVTHR_WIZ CLS_SKILL_OLLAM CLS_BFEAT_OLLAM 6 **** **** 1 0 12 16 14 8 14 12 WIS 0X15 0X3 0 CLASS_TYPE_OLLAM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OLLAM 5 0 0 2 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +171 WarslingSniper 16790656 16825661 16825662 16825663 16825664 IR_WARSLING 6 CLS_ATK_1 CLS_FEAT_WRSLNG CLS_SAVTHR_ROG CLS_SKILL_WRSLNG CLS_BFEAT_WRSLNG 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_HALFLING_WARSLINGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WRSLNG 6 0 0 0 6 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +172 **SpiritShaman** 16790657 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +173 Werewolf 16790658 16824716 16824717 16824718 16824719 IR_WILDWOLF 8 CLS_ATK_1 CLS_FEAT_WWOLF CLS_SAVTHR_ROG CLS_SKILL_WWOLF CLS_BFEAT_WWOLF 2 **** **** 1 0 14 14 14 15 10 10 DEX 0X02 0X1 0 CLASS_TYPE_WEREWOLF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WWOLF 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +174 Hospitaler 16790659 16823380 16823381 16823382 16823383 IC_HOSPITALER 8 CLS_ATK_1 CLS_FEAT_HOSP CLS_SAVTHR_FIGHT CLS_SKILL_HOSP CLS_BFEAT_HOSP 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X04 0X1 0 CLASS_TYPE_HOSPITALER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HOSP 50 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +175 MasterOfShrouds 16790660 16822343 16822344 16822345 16822346 IR_X1_SHADOW 8 CLS_ATK_1 CLS_FEAT_MOS CLS_SAVTHR_SORC CLS_SKILL_MOS CLS_BFEAT_MOS 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X09 0X2 0 CLASS_TYPE_MASTER_OF_SHROUDS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MOS 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +176 ArcaneMasterHarper 16790661 16825217 16825218 16825219 16825220 IR_MH_MASTERH 6 CLS_ATK_2 CLS_FEAT_MHARP CLS_SAVTHR_BARD CLS_SKILL_MHARP CLS_BFEAT_MHARP 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X10 0X2 0 CLASS_TYPE_MASTER_HARPER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MHARP 50 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +177 Frenzied_Berserker 16790662 16824216 16824217 16824218 16824219 IR_FREBZK 12 CLS_ATK_1 CLS_FEAT_FREBZK CLS_SAVTHR_BARB CLS_SKILL_FREBZK CLS_BFEAT_FREBZK 2 **** **** 1 0 16 14 14 14 10 8 STR 0X02 0X1 0 CLASS_TYPE_FRE_BERSERKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FREBZK 50 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +178 Tempest 16790663 16824242 16824243 16824244 16824245 IR_TEMPEST 10 CLS_ATK_1 CLS_FEAT_TEMPST CLS_SAVTHR_BARB CLS_SKILL_TEMPST CLS_BFEAT_TEMPST 2 **** **** 1 0 10 16 12 10 16 10 DEX 0X00 0X0 0 CLASS_TYPE_TEMPEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TEMPST 50 0 0 0 10 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +179 Foe_Hunter 16790664 16824256 16824257 16824258 16824259 IR_FH 10 CLS_ATK_1 CLS_FEAT_FH CLS_SAVTHR_WILD CLS_SKILL_FH CLS_BFEAT_FH 2 **** **** 1 0 10 16 12 10 16 10 DEX 0X00 0X0 0 CLASS_TYPE_FOE_HUNTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FH 50 0 0 0 10 58 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +180 Verdant_Lord 16855246 16855247 16855248 16855249 16855250 IR_DRUID 8 CLS_ATK_1 CLS_FEAT_VLORD CLS_SAVTHR_DRU CLS_SKILL_VLORD CLS_BFEAT_VLORD 4 **** **** 1 0 14 13 13 16 10 10 WIS 0X10 0X2 0 CLASS_VERDANT_LORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VLORD 50 0 0 1 10 3 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +181 Orc_Warlord 16790666 16824312 16824313 16824314 16824315 IR_ORCWAR 12 CLS_ATK_1 CLS_FEAT_ORCWAR CLS_SAVTHR_MONK CLS_SKILL_ORCWAR CLS_BFEAT_ORCWAR 2 **** **** 1 0 16 14 14 14 10 8 STR 0X08 0X2 0 CLASS_TYPE_ORC_WARLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ORCWAR 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +182 Thrall_of_Grazzt 16790667 16824516 16824517 16824518 16824519 IR_TOG 6 CLS_ATK_3 CLS_FEAT_TOG CLS_SAVTHR_WIZ CLS_SKILL_TOG CLS_BFEAT_TOG 4 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_THRALL_OF_GRAZZT_A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOG_A 50 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +183 Necrocarnate 16790668 16838080 16838081 16838082 16838083 ir_truenecro 6 CLS_ATK_3 CLS_FEAT_NECRNM CLS_SAVTHR_WIZ CLS_SKILL_NECRNM CLS_BFEAT_BLANK 2 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_NECROCARNATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NECRNM 13 0 0 0 13 13 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +184 Eldritch_Disciple 16790669 16790013 16790014 16790015 16790016 IR_EDISC 8 CLS_ATK_2 CLS_FEAT_EDISC CLS_SAVTHR_CLER CLS_SKILL_EDISC CLS_BFEAT_EDISC 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_ELDRITCH_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EDISC 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +185 Eldritch_Theurge 16790670 16790017 16790018 16790019 16790020 IR_ETHEUR 4 CLS_ATK_2 CLS_FEAT_ETHEUR CLS_SAVTHR_WIZ CLS_SKILL_ETHEUR CLS_BFEAT_ETHEUR 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ELDRITCH_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ETHEUR 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +186 Ghost_Faced_Killer 16790671 16832352 16832353 16832354 16832355 IR_GFKILL_PRC 8 CLS_ATK_1 CLS_FEAT_GFKILL CLS_SAVTHR_FIGHT CLS_SKILL_GFKILL CLS_BFEAT_GFKILL 4 **** **** 1 0 16 13 16 10 10 9 STR 0X09 0X2 0 CLASS_TYPE_GHOST_FACED_KILLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_GFKILL 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +187 DreadNecromancer 16790672 16847586 16847587 16847588 16847589 IR_PALEMA 6 CLS_ATK_3 CLS_FEAT_DNECRO CLS_SAVTHR_WIZ CLS_SKILL_DNECRO CLS_BFEAT_DNECRO 2 CLS_SPGN_DNECRO CLS_SPKN_DNECRO 1 1 10 14 12 10 14 16 CHA 0X08 0X2 0 CLASS_TYPE_DREAD_NECROMANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DNECRO 0 1 0 0 -1 10 130 **** **** **** **** **** **** 1 **** **** DreadNecro **** **** **** **** **** +188 UltimateMagus **** 16790350 16790351 16790352 16790353 IR_EPICSPELL 4 CLS_ATK_3 CLS_FEAT_UM CLS_SAVTHR_WIZ CLS_SKILL_UM CLS_BFEAT_UM 2 **** **** 0 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_MYSTIC_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UM 50 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +189 ForestMaster 16790673 16793736 16793737 16793738 16793739 IR_DRUID 8 CLS_ATK_2 CLS_FEAT_FORMAS CLS_SAVTHR_DRU CLS_SKILL_FORMAS CLS_BFEAT_FORMAS 2 **** **** 1 0 14 13 13 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_FORESTMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FORMAS 50 0 0 1 10 3 0 cls_stat_formas **** **** **** **** **** **** **** **** **** **** **** **** **** **** +190 Archivist 16790674 16789866 16789867 16789868 16789869 IR_ARCHIVIST 6 CLS_ATK_3 CLS_FEAT_ARCHV CLS_SAVTHR_CLER CLS_SKILL_ARCHV CLS_BFEAT_ARCHV 4 CLS_SPGN_ARCHV **** 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ARCHIVIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCHV 0 1 0 0 -1 700 65 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +191 DeepstoneSentinel 16790675 16829771 16829772 16829773 16829774 IR_DWDEF 10 CLS_ATK_2 CLS_FEAT_DEEPST CLS_SAVTHR_FIGHT CLS_SKILL_DEEPST CLS_BFEAT_DEEPST 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_DEEPSTONE_SENTINEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DEEPST 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +192 JadePhoenixMage 16790676 16827181 16827182 16827183 16827184 IR_JPM 6 CLS_ATK_1 CLS_FEAT_JPM CLS_SAVTHR_FIGHT CLS_SKILL_JPM CLS_BFEAT_JPM 2 **** **** 1 0 14 14 14 10 16 8 INT 0X10 0X2 0 CLASS_TYPE_JADE_PHOENIX_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_JPM 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +193 BloodclawMaster 16790677 16827149 16827150 16827151 16827152 IR_BLOODCLAW 12 CLS_ATK_2 CLS_FEAT_BLDCLW CLS_SAVTHR_WILD CLS_SKILL_BLDCLW CLS_BFEAT_BLDCLW 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_BLOODCLAW_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLDCLW 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +194 RubyKnightVindicator 16790678 16827167 16827168 16827169 16827170 IR_HEIRONEOUS 8 CLS_ATK_1 CLS_FEAT_RBYKNT CLS_SAVTHR_WIZ CLS_SKILL_RBYKNT CLS_BFEAT_RBYKNT 4 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_RUBY_VINDICATOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RBYKNT 50 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +195 MasterOfNine 16790679 16847557 16847558 16847559 16847560 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_MONINE CLS_SAVTHR_WIZ CLS_SKILL_MONINE CLS_BFEAT_MONINE 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_MASTER_OF_NINE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MONINE 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +196 EternalBlade 16790680 16834750 16834751 16834752 16834753 IR_FH 10 CLS_ATK_1 CLS_FEAT_ETBL CLS_SAVTHR_FIGHT CLS_SKILL_ETBL CLS_BFEAT_ETBL 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_ETERNAL_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ETBL 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +197 ShadowSunNinja 16790681 16834778 16834779 16834780 16834781 IR_SHADADEPT 8 CLS_ATK_2 CLS_FEAT_SSN CLS_SAVTHR_MONK CLS_SKILL_SSN CLS_BFEAT_SSN 4 **** **** 1 0 16 13 16 10 10 9 STR 0X11 0X2 0 CLASS_TYPE_SHADOW_SUN_NINJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SSN 50 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +198 WitchbornBinder 16790682 16838144 16838145 16838146 16838147 IR_WITCH 6 CLS_ATK_2 CLS_FEAT_WCHBRN CLS_SAVTHR_WIZ CLS_SKILL_WCHBRN CLS_BFEAT_WCHBRN 4 **** **** 1 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_WITCHBORN_BINDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WCHBRN 50 0 0 0 10 6 2 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +199 Lion_of_Talisid 16855216 16855217 16855218 16855219 16855220 IR_LIONTALISID 8 CLS_ATK_2 CLS_FEAT_LOT CLS_SAVTHR_DRU CLS_SKILL_LOT CLS_BFEAT_LOT 4 **** **** 1 0 14 13 13 16 10 10 WIS 0X16 0X3 0 CLASS_TYPE_LION_OF_TALISID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LOT 50 0 0 1 10 3 0 **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** +200 Disciple_of_Meph 16790684 16823016 16823017 16823018 16823019 IR_DISCMEPH 8 CLS_ATK_1 CLS_FEAT_MEPH CLS_SAVTHR_MONK CLS_SKILL_MEPH CLS_BFEAT_MEPH 4 **** **** 1 0 12 16 14 8 14 12 CHA 0X09 0X2 0 CLASS_TYPE_DISCIPLE_OF_MEPH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MEPH 50 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +201 Soul_Eater 16790685 16832116 16832117 16832118 16832119 IR_SOULEATER 8 CLS_ATK_1 CLS_FEAT_SLEAT CLS_SAVTHR_MONK CLS_SKILL_SLEAT CLS_BFEAT_SLEAT 4 **** **** 1 0 14 16 10 12 14 10 INT 0X09 0X2 0 CLASS_TYPE_SOUL_EATER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SLEAT 50 0 0 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +202 Henshin_Mystic 16790686 16825076 16825078 16825079 16825080 IR_HNSHN 8 CLS_ATK_2 CLS_FEAT_HNSHN CLS_SAVTHR_MONK CLS_SKILL_HNSHN CLS_BFEAT_HNSHN 4 **** **** 1 0 14 14 14 15 10 10 WIS 0X05 0X1 0 CLASS_TYPE_HENSHIN_MYSTIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HNSHN 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +203 Drunken_Master 16790687 16825095 16825097 16825098 16825099 IR_DRNKN 8 CLS_ATK_2 CLS_FEAT_DRNKN CLS_SAVTHR_RANG CLS_SKILL_DRNKN CLS_BFEAT_DRNKN 4 **** **** 1 0 14 14 14 15 10 10 WIS 0X00 0X0 0 CLASS_TYPE_DRUNKEN_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRNKN 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +204 Enlightened_Fist 16790688 16829416 16829417 16829418 16829419 IR_SACREDFIST 8 CLS_ATK_2 CLS_FEAT_ENLFIS CLS_SAVTHR_BARD CLS_SKILL_ENLFIS CLS_BFEAT_ENLFIS 4 **** **** 1 0 10 14 12 14 16 10 DEX 0X00 0X0 0 CLASS_TYPE_ENLIGHTENEDFIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ENLFIS 50 0 1 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +205 Morninglord 16790689 16789624 16789625 16789626 16789627 IR_MORNING 8 CLS_ATK_2 CLS_FEAT_ML CLS_SAVTHR_CLER CLS_SKILL_ML CLS_BFEAT_ML 2 **** **** 1 0 14 8 14 16 10 14 CHA 0X11 0X2 0 CLASS_TYPE_MORNINGLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ML 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +206 IncarnumBlade 16790690 16838136 16838137 16838138 16838139 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_IBLADE CLS_SAVTHR_FIGHT CLS_SKILL_IBLADE CLS_BFEAT_BLANK 2 **** **** 1 0 16 14 14 14 10 8 STR 0X01 0X3 0 CLASS_TYPE_INCARNUM_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IBLADE 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +207 OAShaman 16790691 16827659 16827660 16827661 16827662 IR_CLERIC 6 CLS_ATK_2 CLS_FEAT_SHAMAN CLS_SAVTHR_WIZ CLS_SKILL_SHAMAN CLS_BFEAT_SHAMAN 4 CLS_SPGN_SHAMAN **** 1 1 10 13 12 16 13 12 WIS 0X00 0X0 0 CLASS_TYPE_SHAMAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHAMAN 0 1 0 0 -1 2 0 **** 1 0 1 0 0 0 0 WIS Shaman 1 1 1 0 0 +208 Pyrokineticist 16790692 16827043 16827044 16827045 16827046 IR_BFZ 8 CLS_ATK_2 CLS_FEAT_PYRO CLS_SAVTHR_WILD CLS_SKILL_PYRO CLS_BFEAT_PYRO 2 **** **** 1 0 10 14 14 10 12 16 CHA 0X03 0X1 0 CLASS_TYPE_PYROKINETICIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PYRO 50 0 0 0 10 9 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +209 Shadowmind 16790693 16829364 16829365 16829366 16829367 IR_TFSHAD 6 CLS_ATK_2 CLS_FEAT_SDMIND CLS_SAVTHR_BARD CLS_SKILL_SDMIND CLS_BFEAT_SDMIND 4 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_SHADOWMIND 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SDMIND 50 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +210 Psychic_Thurge 16790694 16823908 16823909 16823910 16823911 IR_PSYCHIC 4 CLS_ATK_3 CLS_FEAT_PSYCH CLS_SAVTHR_WIZ CLS_SKILL_PSYCH CLS_BFEAT_PSYCH 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_PSYCHIC_THEURGE 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYCH 50 0 0 1 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +211 Cerebremancer 16790695 16823912 16823913 16823914 16823915 IR_CEREBRE 4 CLS_ATK_3 CLS_FEAT_CEREB CLS_SAVTHR_WIZ CLS_SKILL_CEREB CLS_BFEAT_CEREB 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_CEREBREMANCER 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CEREB 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +212 Thrallherd 16790696 16823940 16823941 16823942 16823943 IR_THRALLHERD 4 CLS_ATK_3 CLS_FEAT_THRALL CLS_SAVTHR_WIZ CLS_SKILL_THRALL CLS_BFEAT_THRALL 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_THRALLHERD 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_THRALL 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +213 FistOfZouken 16790697 16823964 16823965 16823966 16823967 IR_ZUOKEN 6 CLS_ATK_2 CLS_FEAT_FOZ CLS_SAVTHR_BARD CLS_SKILL_FOZ CLS_BFEAT_FOZ 4 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_FIST_OF_ZUOKEN 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FOZ 50 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +214 HavocMage 16790698 16826709 16826710 16826711 16826712 IR_HAVOCMAGE 8 CLS_ATK_2 CLS_FEAT_HAVOCM CLS_SAVTHR_CLER CLS_SKILL_HAVOCM CLS_BFEAT_HAVOCM 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_HAVOC_MAGE 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HAVOCM 5 0 2 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +215 Contemplative 16790699 16832016 16832017 16832018 16832019 IR_CONTEMPLATIVE 6 CLS_ATK_3 CLS_FEAT_CNTMP CLS_SAVTHR_WIZ CLS_SKILL_CNTMP CLS_BFEAT_CNTMP 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X00 0X0 0 CLASS_TYPE_CONTEMPLATIVE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CNTMP 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +216 Runecaster 16790700 16831969 16831970 16831971 16831972 IC_RUNECASTER 8 CLS_ATK_2 CLS_FEAT_RUNEC CLS_SAVTHR_CLER CLS_SKILL_RUNEC CLS_BFEAT_RUNEC 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X00 0X0 0 CLASS_TYPE_RUNECASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RUNEC 50 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +217 Warchief 16790701 16825714 16825715 16825716 16825717 IR_WARCHIEF 10 CLS_ATK_2 CLS_FEAT_WARCHF CLS_SAVTHR_CLER CLS_SKILL_WARCHF CLS_BFEAT_WARCHF 2 **** **** 1 0 14 16 10 12 14 10 INT 0X00 0X0 0 CLASS_TYPE_WARCHIEF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARCHF 50 0 0 0 10 0 0 cls_stat_warchf **** **** **** **** **** **** **** **** **** **** **** **** **** **** +218 Warmind 16790702 16825724 16825725 16825726 16825727 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_WARMND CLS_SAVTHR_WILD CLS_SKILL_WARMND CLS_BFEAT_WARMND 2 **** **** 1 0 14 12 14 16 10 10 WIS 0X04 0X1 0 CLASS_TYPE_WARMIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARMND 50 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +219 IronMind 16790703 16822552 16822553 16822554 16822555 IC_IRONMIND 10 CLS_ATK_2 CLS_FEAT_IRNMND CLS_SAVTHR_WIZ CLS_SKILL_IRNMND CLS_BFEAT_IRNMND 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X00 0X0 0 CLASS_TYPE_IRONMIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IRNMND 50 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +220 SanctifiedMind 16790704 16822568 16822569 16822570 16822571 IR_THRALLHERD 8 CLS_ATK_1 CLS_FEAT_SNCMND CLS_SAVTHR_CLER CLS_SKILL_SNCMND CLS_BFEAT_SNCMND 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X10 0X2 0 CLASS_TYPE_SANCTIFIED_MIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SNCMND 6 0 0 1 6 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +221 SlayerOfDomiel 16790705 16827566 16827567 16827568 16827569 IR_HEIRONEOUS 6 CLS_ATK_2 CLS_FEAT_SOD CLS_SAVTHR_ROG CLS_SKILL_SOD CLS_BFEAT_SOD 4 CLS_SPGN_SOD **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SLAYER_OF_DOMIEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOD 50 0 0 0 10 2 0 **** 1 0 0 0 0 0 0 WIS Domiel 1 1 255 0 0 +222 DiscipleOfAsmodeus 16790706 16822624 16822625 16822626 16822627 IR_SOULEATER 6 CLS_ATK_2 CLS_FEAT_DOA CLS_SAVTHR_WIZ CLS_SKILL_DOA CLS_BFEAT_DOA 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X09 0X2 0 CLASS_TYPE_DISCIPLE_OF_ASMODEUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DOA 50 0 2 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +223 Dirgesinger 16790707 16822584 16822585 16822586 16822587 IR_PALEMA 6 CLS_ATK_2 CLS_FEAT_DIRGE CLS_SAVTHR_WIZ CLS_SKILL_DIRGE CLS_BFEAT_DIRGE 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X08 0X2 0 CLASS_TYPE_DIRGESINGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIRGE 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +224 Suel_Archanamach 16790708 16822598 16822599 16822600 16822601 IR_HAVOCMAGE 8 CLS_ATK_2 CLS_FEAT_SUEL CLS_SAVTHR_BARD CLS_SKILL_SUEL CLS_BFEAT_SUEL 4 CLS_SPGN_SUEL CLS_SPKN_SUEL 1 1 14 14 14 15 10 10 WIS 0X00 0X0 0 CLASS_TYPE_SUEL_ARCHANAMACH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SUEL 50 0 0 0 10 10 131 **** **** **** **** **** **** **** **** **** Suel **** **** **** **** **** +225 Favoured_Soul 16790709 16822610 16822611 16822612 16822613 IR_SPELLFIRE 8 CLS_ATK_2 CLS_FEAT_FAVSOL CLS_SAVTHR_MONK CLS_SKILL_FAVSOL CLS_BFEAT_FAVSOL 2 CLS_SPGN_FAVSOL CLS_SPKN_FAVSOL 1 1 10 14 12 14 10 16 CHA 0X00 0X0 0 CLASS_TYPE_FAVOURED_SOUL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FAVSOL 20 1 0 0 -1 2 3 **** **** **** **** **** **** **** **** **** FavoredSoul **** **** **** **** **** +226 WarWizardOfCormyr 16790710 16822644 16822645 16822646 16822647 IC_RUNE 4 CLS_ATK_3 CLS_FEAT_WWOC CLS_SAVTHR_CLER CLS_SKILL_WWOC CLS_BFEAT_WWOC 2 **** **** 1 0 12 16 14 8 14 12 INT 0X14 0X3 0 CLASS_TYPE_WAR_WIZARD_OF_CORMYR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WWOC 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +227 SkullclanHunter 16790711 16824867 16824868 16824869 16824870 IR_SKULLCLAN 6 CLS_ATK_2 CLS_FEAT_SKLCLN CLS_SAVTHR_BARD CLS_SKILL_SKLCLN CLS_BFEAT_SKLCLN 6 **** **** 1 0 14 14 14 15 10 10 WIS 0X11 0X2 0 CLASS_TYPE_SKULLCLAN_HUNTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SKLCLN 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +228 Truenamer 16790712 16828481 16828482 16828483 16828484 IR_TRUENAME 6 CLS_ATK_2 CLS_FEAT_TRUE CLS_SAVTHR_BARD CLS_SKILL_TRUE CLS_BFEAT_TRUE 4 **** **** 1 0 10 12 14 10 16 14 INT 0X00 0X0 0 CLASS_TYPE_TRUENAMER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TRUE 20 1 0 0 -1 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +229 MasterAlchemist 16790713 16847239 16847240 16847241 16847242 IR_MSTALC 4 CLS_ATK_3 CLS_FEAT_MSTALC CLS_SAVTHR_WIZ CLS_SKILL_MSTALC CLS_BFEAT_MSTALC 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_MASTER_ALCHEMIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MSTALC 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +230 Bereft 16790714 16827537 16827538 16827539 16827540 IR_MAESTER 6 CLS_ATK_2 CLS_FEAT_BEREFT CLS_SAVTHR_WIZ CLS_SKILL_BEREFT CLS_BFEAT_BEREFT 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X01 0X3 1 CLASS_TYPE_BEREFT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEREFT 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +231 BrimstoneSpeaker 16790715 16827554 16827555 16827556 16827557 IR_BRIMSTONE 8 CLS_ATK_2 CLS_FEAT_BRIMST CLS_SAVTHR_CLER CLS_SKILL_BRIMST CLS_BFEAT_BRIMST 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X11 0X2 0 CLASS_TYPE_BRIMSTONE_SPEAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BRIMST 50 0 0 2 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +232 Shugenja **** 16825142 16825143 16825144 16825145 IR_HNSHN 6 CLS_ATK_3 CLS_FEAT_SHUGEN CLS_SAVTHR_WIZ CLS_SKILL_SHUGEN CLS_BFEAT_SHUGEN 4 **** **** 0 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SHUGENJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHUGEN 0 1 0 0 -1 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +233 Sohei 16790716 16827429 16827430 16827431 16827432 IR_FIGHTER 10 CLS_ATK_2 CLS_FEAT_SOHEI CLS_SAVTHR_CLER CLS_SKILL_SOHEI CLS_BFEAT_SOHEI 2 CLS_SPGN_SOHEI **** 1 1 16 10 13 14 13 10 STR 0X05 0X1 0 CLASS_TYPE_SOHEI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOHEI 0 1 0 0 -1 6 0 **** 1 0 0 0 0 0 0 WIS Sohei 1 4 255 0 0 +234 Crusader 16790717 16829702 16829703 16829704 16829705 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_CRUSDR CLS_SAVTHR_FIGHT CLS_SKILL_CRUSDR CLS_BFEAT_CRUSDR 4 **** **** 1 0 16 14 14 10 12 10 STR 0X1E 0X3 1 CLASS_TYPE_CRUSADER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CRUSDR 0 1 0 0 -1 715 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +235 Swordsage 16790718 16829706 16829707 16829708 16829709 IR_MONK 8 CLS_ATK_2 CLS_FEAT_SWDSGE CLS_SAVTHR_BARD CLS_SKILL_SWDSGE CLS_BFEAT_SWDSGE 6 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_SWORDSAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWDSGE 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +236 Warblade 16790719 16829710 16829711 16829712 16829713 IR_FIGHTER 12 CLS_ATK_1 CLS_FEAT_WARBLD CLS_SAVTHR_FIGHT CLS_SKILL_WARBLD CLS_BFEAT_WARBLD 4 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_WARBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARBLD 0 1 0 0 -1 860 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +237 Warmage 16790720 16827604 16827605 16827606 16827607 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_WRMAGE CLS_SAVTHR_WIZ CLS_SKILL_WRMAGE CLS_BFEAT_WRMAGE 2 CLS_SPGN_WRMAGE CLS_SPKN_WRMAGE 1 1 10 14 12 10 14 16 INT 0X00 0X0 0 CLASS_TYPE_WARMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WRMAGE 0 1 0 0 -1 10 130 **** **** **** **** **** **** **** **** **** Warmage **** **** **** **** **** +238 Knight 16790721 16827632 16827633 16827634 16827635 IR_PALADIN 12 CLS_ATK_1 CLS_FEAT_KNIGHT CLS_SAVTHR_WIZ CLS_SKILL_KNIGHT CLS_BFEAT_KNIGHT 2 **** **** 1 0 16 10 16 10 10 12 STR 0X05 0X1 0 CLASS_TYPE_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KNIGHT 20 1 0 0 -1 765 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +239 FistOfDalQuor 16790722 16827033 16827034 16827035 16827036 IR_SHOUDISC 10 CLS_ATK_2 CLS_FEAT_DALQUR CLS_SAVTHR_CLER CLS_SKILL_DALQUR CLS_BFEAT_DALQUR 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_FIST_DAL_QUOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DALQUR 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +240 HandOfTheWingedMasters 16790723 16832694 16832695 16832696 16832697 IR_HOTWM 8 CLS_ATK_2 CLS_FEAT_HOTWM CLS_SAVTHR_BARD CLS_SKILL_HOTWM CLS_BFEAT_HOTWM 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_HANDOTWM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HOTWM 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +241 Talon_of_Tiamat 16790724 16832629 16832630 16832631 16832632 IR_TALON_TIAMAT 8 CLS_ATK_2 CLS_FEAT_TALTIA CLS_SAVTHR_FIGHT CLS_SKILL_TALTIA CLS_BFEAT_TALTIA 2 **** **** 1 0 15 9 14 13 10 15 STR 0X09 0X2 0 CLASS_TYPE_TALON_OF_TIAMAT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TALTIA 50 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +242 Dragon_Devotee 16790725 16832633 16832634 16832635 16832636 IR_DRAGON_DEVO 6 CLS_ATK_2 CLS_FEAT_DRADEV CLS_SAVTHR_FIGHT CLS_SKILL_DRADEV CLS_BFEAT_DRADEV 4 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_DRAGON_DEVOTEE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRADEV 5 0 0 0 5 10 0 cls_stat_dradev **** **** **** **** **** **** **** **** **** **** **** **** **** **** +243 FrostMage 16790726 16835103 16835104 16835105 16835106 IR_ELEMCOLD 4 CLS_ATK_3 CLS_FEAT_FROSTM CLS_SAVTHR_WIZ CLS_SKILL_FROSTM CLS_BFEAT_FROSTM 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X00 0X0 0 CLASS_TYPE_FROST_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FROSTM 50 0 1 0 10 1 0 cls_stat_frostm **** **** **** **** **** **** **** **** **** **** **** **** **** **** +244 WarforgedJuggernaut 16790727 16835083 16835084 16835085 16835086 IR_SHOUDISC 12 CLS_ATK_1 CLS_FEAT_JUGGR CLS_SAVTHR_FIGHT CLS_SKILL_JUGGR CLS_BFEAT_JUGGR 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_WARFORGED_JUGGERNAUT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_JUGGR 5 0 0 0 5 64 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +245 Battlesmith 16790728 16835069 16835070 16835071 16835072 IC_LEGDREAD 10 CLS_ATK_1 CLS_FEAT_BSMITH CLS_SAVTHR_FIGHT CLS_SKILL_BSMITH CLS_BFEAT_BSMITH 2 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_BATTLESMITH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BSMITH 5 0 0 0 5 64 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +246 NentyarHunter 16790729 16835057 16835058 16835059 16835060 IR_RANGER 6 CLS_ATK_2 CLS_FEAT_HUNTER CLS_SAVTHR_RANG CLS_SKILL_HUNTER CLS_BFEAT_HUNTER 4 CLS_SPGN_HUNTER **** 1 1 12 16 14 8 14 12 DEX 0X10 0X2 0 CLASS_TYPE_NENTYAR_HUNTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HUNTER 5 0 0 0 5 64 130 **** 1 0 0 0 0 0 0 WIS Nentyar 1 1 255 0 0 +247 Blighter 16790730 16835035 16835036 16835037 16835038 IR_JUSTWW 8 CLS_ATK_2 CLS_FEAT_BLIGHT CLS_SAVTHR_DRU CLS_SKILL_BLIGHT CLS_BFEAT_BLIGHT 4 CLS_SPGN_BLIGHT **** 1 1 12 16 14 8 14 12 INT 0X08 0X2 0 CLASS_TYPE_BLIGHTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLIGHT 50 0 **** 0 10 10 0 **** 1 0 0 0 0 0 0 WIS Blighter 1 1 255 0 0 +248 Rage_Mage 16790731 16789817 16789818 16789819 16789820 IR_RAGEMAGE 8 CLS_ATK_2 CLS_FEAT_RAGEM CLS_SAVTHR_BARB CLS_SKILL_RAGEM CLS_BFEAT_RAGEM 2 **** **** 1 0 12 16 14 10 14 10 INT 0X02 0X1 0 CLASS_TYPE_RAGE_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RAGEM 50 0 2 0 10 15 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +249 Dragonheart_Mage 16790732 16832498 16832499 16832500 16832501 IR_DRGNHTMAGE 6 CLS_ATK_3 CLS_FEAT_DRGNHT CLS_SAVTHR_CLER CLS_SKILL_DRGNHT CLS_BFEAT_DRGNHT 2 **** **** 1 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_DRAGONHEART_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRGNHT 50 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +250 Swift_Wing 16790733 16832494 16832495 16832496 16832497 DRADIS_RADIANT 8 CLS_ATK_2 CLS_FEAT_SWFTWG CLS_SAVTHR_WILD CLS_SKILL_SWFTWG CLS_BFEAT_SWFTWG 4 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_SWIFT_WING 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWFTWG 50 0 0 1 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +251 Diamond_Dragon 16790734 16832440 16832441 16832442 16832443 DRADIS_CRYSTAL 8 CLS_ATK_2 CLS_FEAT_DIADRA CLS_SAVTHR_BARD CLS_SKILL_DIADRA CLS_BFEAT_DIADRA 2 **** **** 1 0 14 14 12 10 16 10 STR 0X01 0X3 1 CLASS_TYPE_DIAMOND_DRAGON 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIADRA 50 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +252 Frostrager 16790735 16834512 16834513 16834514 16834515 IR_FREBZK 12 CLS_ATK_1 CLS_FEAT_FRTRGR CLS_SAVTHR_BARB CLS_SKILL_FRTRGR CLS_BFEAT_FRTRGR 2 **** **** 1 0 16 14 14 14 10 8 STR 0X00 0X0 0 CLASS_TYPE_FROSTRAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FRTRGR 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +253 CrintiShadowMarauder 16790736 16823080 16823081 16823082 16823083 IR_TFSHAD 8 CLS_ATK_2 CLS_FEAT_CRINTI CLS_SAVTHR_ROG CLS_SKILL_CRINTI CLS_BFEAT_CRINTI 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X08 0X2 0 CLASS_TYPE_CRINTI_SHADOW_MARAUDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CRINTI 5 0 0 0 5 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** +254 ShadowThief 16790737 16823088 16823089 16823090 16823091 IR_X1_SHADOW 6 CLS_ATK_2 CLS_FEAT_AMN CLS_SAVTHR_ROG CLS_SKILL_AMN CLS_BFEAT_AMN 6 **** **** 1 0 16 15 14 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SHADOW_THIEF_OF_AMN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_AMN 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** diff --git a/_module/nss/ms_name_inc.nss b/_module/nss/ms_name_inc.nss index e4953212..a2f06959 100644 --- a/_module/nss/ms_name_inc.nss +++ b/_module/nss/ms_name_inc.nss @@ -4,7 +4,7 @@ // ms_name_inc.nss // // // // By Thrym of Markshire 5/21/06 // -// Updated by: Jaysyn 2021/12/03 // +// Updated by: Jaysyn 2026-02-11 13:29:20 // // // //////////////////////////////////////////////////////////////////////////////// /* @@ -60,35 +60,180 @@ #include "prc_inc_racial" - - ///// FUNCTION DECLARATIONS //////////////////////////////////////////////////// +/** + * @brief Retrieves the localized name of a class by its class constant. + * + * This function looks up the class name from the classes.2da file and + * retrieves the localized string from the dialog.tlk file. + * + * @param nClass The class constant (e.g., CLASS_TYPE_FIGHTER) + * @return The localized class name, or an empty string if not found + */ + string GetClassName(int nClass); + +/** + * @brief Returns the class constant of the creature's highest class by level + * + * This function iterates through all class positions (1-254) for the specified + * creature and identifies which class has the highest level. Racial type + * pseudo-classes are explicitly excluded from consideration. + * + * @param oNPC The creature object to examine (defaults to OBJECT_SELF) + * @return The class constant (e.g., CLASS_TYPE_FIGHTER) of the highest-level class, + * or -1 if no valid classes are found or if oNPC is invalid + * + * @note Uses GetClassByPosition() to check all 254 possible class positions + * @note Excludes racial pseudo-classes: ABERRATION, ANIMAL, BEAST, CONSTRUCT, + * DRAGON, ELEMENTAL, FEY, GIANT, HUMANOID, MAGICAL_BEAST, MONSTROUS, + * OOZE, OUTSIDER, PLANT, SHAPECHANGER, UNDEAD, VERMIN + * @note This function is used by the naming system to determine class-based titles + */ +int GetHighestClassType(object oNPC = OBJECT_SELF); + +/** + * @brief Returns a level-based title for the specified class type + * + * This function generates appropriate NPC titles based on class type and level. + * Some titles are gender-specific and will vary between male and female characters. + * The function is part of the Markshire Nomenclature system for dynamic NPC naming. + * + * @param nClassType The class constant (e.g., CLASS_TYPE_FIGHTER) + * @return A string containing the level-appropriate title, or empty string if not found + * + * @note Assumes OBJECT_SELF is the creature being evaluated + * @note Gender-specific titles use ternary operators for compactness + * @note Sorcerer and Wizard classes share identical title progressions + * @note Ranger class has repeating titles at higher levels (21-29 repeat 11-18) + * + * Supported Classes: + * - Barbarian (gender-specific at levels 6, 15, 20, default) + * - Rogue (no gender variations) + * - Bard (gender-specific at levels 4, 11, 19, 27) + * - Sorcerer/Wizard (shared progression) + * - Cleric (gender-specific at levels 9, 15, 16, 18, default) + * - Druid (no gender variations) + * - Fighter (no gender variations) + * - Monk (no gender variations, extends to level 21) + * - Paladin (no gender variations, shares Monk progression from level 11) + * - Ranger (no gender variations, cycles titles at high levels) + */ string GetClassLevelTitle(int nClassType); +/** + * @brief Returns the highest class level of a creature, excluding racial pseudo-classes + * + * This function iterates through all possible class types (0-254) for the specified + * creature and returns the highest class level found. Racial type pseudo-classes + * are explicitly excluded from consideration. + * + * @param oCreature The creature object to examine (defaults to OBJECT_SELF) + * @return The highest class level (int), or -1 if no valid classes are found + * + * @note Iterates through all 254 possible class types + * @note Excludes racial pseudo-classes: ABERRATION, ANIMAL, BEAST, CONSTRUCT, + * DRAGON, ELEMENTAL, FEY, GIANT, HUMANOID, MAGICAL_BEAST, MONSTROUS, + * OOZE, OUTSIDER, PLANT, SHAPECHANGER, UNDEAD, VERMIN + * @note Uses early termination when GetLevelByClass() returns 0 for efficiency + * @note This function is used by the naming system to determine class-based titles + */ int GetHighestClassLevel(object oCreature = OBJECT_SELF); -// Generates a Random First Name -// based on Race and Gender -// For all Standard PC Races and Animals +/** + * @brief Generates a random first name based on the NPC's race and gender + * + * This function selects an appropriate random first name from the game's + * name generation tables based on the creature's racial type and gender. + * Each race/gender combination maps to a specific index in the RandomName + * function's name tables. + * + * @param oNPC The creature object to generate a name for (defaults to OBJECT_SELF) + * @return A randomly generated first name string appropriate to the race and gender + * + * @note Uses MyPRCGetRacialType() for race detection to support PRC races + * @note Animals use index 0, default/fallback uses -1 for males, 0 for females + * @note Race First Name Magic Numbers: + * - Animal: 0 + * - Dwarf: 2 (male), 3 (female) + * - Elf: 5 (male), 6 (female) + * - Gnome: 8 (male), 9 (female) + * - Half-Elf: 11 (male), 12 (female) + * - Halfling: 14 (male), 15 (female) + * - Half-Orc: 17 (male), 18 (female) + * - Human: 20 (male), 21 (female) + * - Default: -1 (male), 0 (female) + */ string ms_RandomFirstName(object oNPC = OBJECT_SELF); -// Generates a Random Last Name -// based on Race For all -// Standard PC Races and Animals +/** + * @brief Generates a random last name based on the NPC's race + * + * This function selects an appropriate random last name from the game's + * name generation tables based on the creature's racial type. Each race + * maps to a specific index in the RandomName function's name tables. + * + * @param oNPC The creature object to generate a name for (defaults to OBJECT_SELF) + * @return A randomly generated last name string appropriate to the race + * + * @note Uses MyPRCGetRacialType() for race detection to support PRC races + * @note Race Last Name Magic Numbers: + * - Dwarf: 4 + * - Elf: 7 + * - Gnome: 10 + * - Half-Elf: 13 + * - Halfling: 16 + * - Half-Orc: 19 + * - Human: 22 + * - Default: 1 + */ string ms_RandomLastName(object oNPC = OBJECT_SELF); -// Function designed to read the variable -// "SET_NAME" and assign a new name to the NPC -// If the variable is set to "RANDOM" a -// random name is assigned. -// A second variable can be assigned to -// have the random name be a random Full Name. +/** + * @brief Main NPC naming function for Markshire's Nomenclature system + * + * This function handles multiple naming modes for NPCs based on local variables: + * - Fixed names via SET_NAME variable + * - Random names based on race and gender when SET_NAME="RANDOM" + * - Class-based titles via CLASS_TITLE variable + * - Random class-specific postfixes via RND_* variables + * + * @param oNPC The creature object to name (defaults to OBJECT_SELF) + * + * @note This function is typically called from spawn scripts (nw_c2_default9) + * @see ms_RandomFirstName() for random first name generation + * @see ms_RandomLastName() for random last name generation + * @see GetClassLevelTitle() for class-based titles + * + * Local Variables Used: + * - SET_NAME (string): Fixed name or "RANDOM" for random generation + * - TITLE (string): Prefix to prepend to name + * - POSTFIX (string): Suffix to append to name + * - BASE_RACE (string): Race name for class title mode + * - CLASS_TITLE (int): Enable class-based titles + * - NAME_TYPE (int): 1=full name, 0=first name only + * - RND_* (int): Enable random class postfixes (PALADIN, MONK, etc.) + */ void ms_Nomenclature(object oNPC = OBJECT_SELF); ///// FUNCTIONS //////////////////////////////////////////////////////////////// +string GetClassName(int nClass) +{ + // Look up the StrRef as a string in spells.2da + string sStrRef = Get2DAString("classes", "Name", nClass); + + // Convert to an integer + int nStrRef = StringToInt(sStrRef); + + // Look up the name in the dialog.tlk file + string sClassName = GetStringByStrRef(nStrRef); + + // return the spell's name + return sClassName; +} + void ms_Nomenclature(object oNPC = OBJECT_SELF) { string sRandomName = GetLocalString(oNPC, "SET_NAME"); @@ -99,1509 +244,397 @@ void ms_Nomenclature(object oNPC = OBJECT_SELF) int nGender = GetGender(oNPC); int bClassTitle = GetLocalInt(oNPC,"CLASS_TITLE"); int nHighClass = GetHighestClassLevel(oNPC); - int nLevel = GetLevelByClass(nHighClass, oNPC); + int nLevel = GetLevelByClass(nHighClass, oNPC); + + string sClassTitle = GetClassLevelTitle(nHighClass); //:: Handles class level based NPC titles if (bClassTitle) { - string sTitle; - - switch (nHighClass) - { - case CLASS_TYPE_BARBARIAN: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Brute" ; - break; - - case 4: case 5: - sTitle = "Vandal"; break; - - case 6: - if (nGender == 1) - {sTitle = "Plunderess"; break;} - else - {sTitle = "Plunderer"; break;} - - case 7: - sTitle = "Pillager"; break; - - case 8: - sTitle = "Marauder"; break; - - case 9: - sTitle = "Reaver"; break; - - case 10: - sTitle = "Barbarian"; break; - - case 11: - sTitle = "Mauler"; break; - - case 12: - sTitle = "Ravager"; break; - - case 13: - sTitle = "Slaughterer"; break; - - case 14: - sTitle = "Destroyer"; break; - - case 15: - if (nGender == 1) - {sTitle = "Chieftainess"; break;} - else - {sTitle = "Chieftain"; break;} - - case 16: - sTitle = "Bloodletter"; break; - - case 17: - sTitle = "Rampager"; break; - - case 18: - sTitle = "Slayer"; break; - - case 19: - sTitle = "Warmonger"; break; - - case 20: - if (nGender == 1) - {sTitle = "High Chieftainess"; break;} - else - {sTitle = "High Chieftain"; break;} - - default: - if (nGender == 1) - {sTitle = "Conqueress"; break;} - else - {sTitle = "Conqueror"; break;} - - } - - case CLASS_TYPE_ROGUE: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Lookout" ; - break; - - case 4: case 5: - sTitle = "Outlaw"; break; - - case 6: - sTitle = "Scalawag"; break; - - case 7: - sTitle = "Creeper"; break; - - case 8: - sTitle = "Larker"; break; - - case 9: - sTitle = "Footpad"; break; - - case 10: - sTitle = "Rogue"; break; - - case 11: - sTitle = "Cutpurse"; break; - - case 12: - sTitle = "Thief"; break; - - case 13: - sTitle = "Pilferer"; break; - - case 14: - sTitle = "Robber"; break; - - case 15: - sTitle = "Sharper"; break; - - case 16: - sTitle = "Burglar"; break; - - case 17: - sTitle = "Filcher"; break; - - case 18: - sTitle = "Scoundrel"; break; - - case 19: - sTitle = "Knave"; break; - - case 20: - sTitle = "Prowler"; break; - - default: - sTitle = "Master Rogue"; break; - - } - - case CLASS_TYPE_BARD: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Crier" ; - break; - - case 4: case 5: - if (nGender == 1) - {sTitle = "Chantress"; break;} - else - {sTitle = "Chanter"; break;} - - case 6: - sTitle = "Skop"; break; - - case 7: - sTitle = "Accompanist"; break; - - case 8: - sTitle = "Rhymer"; break; - - case 9: - sTitle = "Singer"; break; - - case 10: - sTitle = "Balladeer"; break; - - case 11: - if (nGender == 1) - {sTitle = "Cantoress"; break;} - else - {sTitle = "Cantor"; break;} - - case 12: - sTitle = "Lutenist"; break; - - case 13: - sTitle = "Melodist"; break; - - case 14: - sTitle = "Lyrist"; break; - - case 15: - sTitle = "Jongleur"; break; - - case 16: - sTitle = "Loreweaver"; break; - - case 17: - sTitle = "Chronicler"; break; - - case 18: - sTitle = "Muse"; break; - - case 19: - if (nGender == 1) - {sTitle = "Rhapsode"; break;} - else - {sTitle = "Rhapsodist"; break;} - - case 20: - sTitle = "Bard"; break; - - case 21: - sTitle = "Raconteur"; break; - - case 22: - sTitle = "Siren"; break; - - case 23: - sTitle = "Songsmith"; break; - - case 24: - sTitle = "Versifer"; break; - - case 25: - sTitle = "Minstrel"; break; - - case 26: - sTitle = "Sonneteer"; break; - - case 27: - if (nGender == 1) - {sTitle = "Trobairitz"; break;} - else - {sTitle = "Troubadour"; break;} - - case 28: - sTitle = "Citharist"; break; - - case 29: - sTitle = "High Minstrel"; break; - - default: - sTitle = "Master Bard"; break; - - } - - case CLASS_TYPE_SORCERER: - case CLASS_TYPE_WIZARD: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Apprentice" ; - break; - - case 4: case 5: - sTitle = "Adept"; break; - - case 6: - sTitle = "Journeymage"; break; - - case 7: - sTitle = "Hedge Mage"; break; - - case 8: - sTitle = "Magician"; break; - - case 9: - sTitle = "Prestidigitator"; break; - - case 10: - sTitle = "Wizard"; break; - - case 11: - sTitle = "Sage"; break; - - case 12: - sTitle = "Visionary"; break; - - case 13: - sTitle = "Loremaster"; break; - - case 14: - sTitle = "Mage"; break; - - case 15: - sTitle = "Fatespinner"; break; - - case 16: - sTitle = "Cabalist"; break; - - case 17: - sTitle = "Thaumaturge"; break; - - case 18: - sTitle = "Theurgist"; break; - - case 19: - sTitle = "Augur"; break; - - case 20: - sTitle = "Spellbinder"; break; - - default: - sTitle = "Archmage"; break; - - } - - case CLASS_TYPE_CLERIC: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Candidate" ; - break; - - case 4: case 5: - sTitle = "Aspirant"; break; - - case 6: - sTitle = "Novice"; break; - - case 7: - sTitle = "Acolyte"; break; - - case 8: - sTitle = "Initiate"; break; - - case 9: - if (nGender == 1) - {sTitle = "Priestess"; break;} - else - {sTitle = "Priest"; break;} - - case 10: - sTitle = "Cleric"; break; - - case 11: - sTitle = "Curate"; break; - - case 12: - sTitle = "Apostle"; break; - - case 13: - sTitle = "Ovate"; break; - - case 14: - sTitle = "Missionary"; break; - - case 15: - if (nGender == 1) - {sTitle = "Canoness"; break;} - else - {sTitle = "Canon"; break;} - - case 16: - if (nGender == 1) - {sTitle = "Abbotess"; break;} - else - {sTitle = "Abbot"; break;} - - case 17: - sTitle = "Bishop"; break; - - case 18: - if (nGender == 1) - {sTitle = "Matriarch"; break;} - else - {sTitle = "Patriarch"; break;} - - case 19: - sTitle = "Preacher"; break; - - default: - if (nGender == 1) - {sTitle = "High Priestess"; break;} - else - {sTitle = "High Priest"; break;} - - } + int nClassType = GetHighestClassType(oNPC); + sClassTitle = GetClassLevelTitle(nClassType); - case CLASS_TYPE_DRUID: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Initiate" ; - break; - - case 4: case 5: - sTitle = "Devotee"; break; - - case 6: - sTitle = "Beastling"; break; - - case 7: - sTitle = "Grovelurker"; break; - - case 8: - sTitle = "Shaper"; break; - - case 9: - sTitle = "Springwalker"; break; - - case 10: - sTitle = "Druid"; break; - - case 11: - sTitle = "Naturekin"; break; - - case 12: - sTitle = "Treewarden"; break; - - case 13: - sTitle = "Auspex"; break; - - case 14: - sTitle = "Haruspex"; break; - - case 15: - sTitle = "Student of Stones"; break; - - case 16: - sTitle = "Student of Waters"; break; - - case 17: - sTitle = "Student of Forests"; break; - - case 18: - sTitle = "Student of Winds"; break; - - case 19: - sTitle = "Student of Changes"; break; - - case 20: - sTitle = "Pathwarden"; break; - - default: - sTitle = "Archdruid"; break; - - } - - case CLASS_TYPE_FIGHTER: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Guard"; - break; - - case 4: - sTitle = "Elite Guard"; break; - - case 5: case 6: - sTitle = "Warrior"; break; - - case 7: - sTitle = "Elite Warrior"; break; - - case 8: - sTitle = "Soldier"; break; - - case 9: - sTitle = "Enforcer"; break; - - case 10: - sTitle = "Fighter"; break; - - case 11: - sTitle = "Skirmisher"; break; - - case 12: - sTitle = "Veteran"; break; - - case 13: - sTitle = "Armiger"; break; - - case 14: - sTitle = "Myrmidon"; break; - - case 15: - sTitle = "Hero"; break; - - case 16: - sTitle = "Vanguard"; break; - - case 17: - sTitle = "Sentinel"; break; - - case 18: - sTitle = "Dominator"; break; - - case 19: - sTitle = "Warmonger"; break; - - case 20: - sTitle = "Champion"; break; - - default: - sTitle = "Grandmaster"; break; - - } - - case CLASS_TYPE_MONK: - switch(nLevel) - { - case 1: - sTitle = "Trainee"; break; - - case 2: - sTitle = "Initiate"; break; - - case 3: - sTitle = "Novice"; break; + string sClassName = GetClassName(nClassType); - case 4: - sTitle = "Neophyte"; break; - - case 5: - sTitle = "Aspirant"; break; - - case 6: - sTitle = "Acolyte"; break; - - case 7: - sTitle = "Devotee"; break; - - case 8: - sTitle = "Disciple"; break; - - case 9: - sTitle = "Adept"; break; - - case 10: - sTitle = "Ascetic"; break; - - case 11: - sTitle = "Pilgrim"; break; - - case 12: - sTitle = "Master"; break; - - case 13: - sTitle = "Anchorite"; break; - - case 14: - sTitle = "Mystic"; break; - - case 15: - sTitle = "Meditator"; break; - - case 16: - sTitle = "Seeker"; break; - - case 17: - sTitle = "Guru"; break; - - case 18: - sTitle = "Sensei"; break; - - case 19: - sTitle = "Sannyasi"; break; - - case 20: - sTitle = "Exemplar"; break; - - case 21: - sTitle = "Transcendent"; break; - - default: - sTitle = "High Master"; break; - - } - - case CLASS_TYPE_PALADIN: - switch(nLevel) - { - case 1: - sTitle = "Advocate"; break; - - case 2: - sTitle = "Initiate"; break; - - case 3: - sTitle = "Squire"; break; - - case 4: - sTitle = "Gallant"; break; - - case 5: - sTitle = "Emissary"; break; - - case 6: - sTitle = "Guardian"; break; - - case 7: - sTitle = "Devotee"; break; - - case 8: - sTitle = "Disciple"; break; - - case 9: - sTitle = "Adept"; break; - - case 10: - sTitle = "Ascetic"; break; - - case 11: - sTitle = "Pilgrim"; break; - - case 12: - sTitle = "Master"; break; - - case 13: - sTitle = "Anchorite"; break; - - case 14: - sTitle = "Mystic"; break; - - case 15: - sTitle = "Meditator"; break; - - case 16: - sTitle = "Seeker"; break; - - case 17: - sTitle = "Guru"; break; - - case 18: - sTitle = "Sensei"; break; - - case 19: - sTitle = "Sannyasi"; break; - - case 20: - sTitle = "Exemplar"; break; - - case 21: - sTitle = "Transcendent"; break; - - default: - sTitle = "High Master"; break; - - } - - case CLASS_TYPE_RANGER: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Greenhorn" ; - break; - - case 4: case 5: - sTitle = "Tenderfoot"; break; - - case 6: - sTitle = "Vagrant"; break; - - case 7: - sTitle = "Tramp"; break; - - case 8: - sTitle = "Nomad"; break; - - case 9: - sTitle = "Wanderer"; break; - - case 10: - sTitle = "Ranger"; break; - - case 11: - sTitle = "Rambler"; break; - - case 12: - sTitle = "Traveler"; break; - - case 13: - sTitle = "Sojourner"; break; - - case 14: - sTitle = "Outrider"; break; - - case 15: - sTitle = "Wayfarer"; break; - - case 16: - sTitle = "Excursionist"; break; - - case 17: - sTitle = "Trekker"; break; - - case 18: - sTitle = "Trailblazer"; break; - - case 19: - sTitle = "Woodsman"; break; - - case 20: - sTitle = "High Ranger"; break; - - case 21: - sTitle = "Ranger"; break; - - case 22: - sTitle = "Rambler"; break; - - case 23: - sTitle = "Traveler"; break; - - case 24: - sTitle = "Sojourner"; break; - - case 25: - sTitle = "Outrider"; break; - - case 26: - sTitle = "Wayfarer"; break; - - case 27: - sTitle = "Excursionist"; break; - - case 28: - sTitle = "Trekker"; break; - - case 29: - sTitle = "Trailblazer"; break; - - default: - sTitle = "Ranger Lord"; break; - - } - - } - - //return sTitle; + sRandomName = sBaseRace +" "+ sClassTitle; + DelayCommand(0.0f, SetName(oNPC, (sRandomName))); + return; } - //:: Handles class based Henchman titles - int nRndRogue = GetLocalInt(OBJECT_SELF,"RND_ROGUE"); - if (nRndRogue == 1) + int nRndPaladin = GetLocalInt(OBJECT_SELF, "RND_PALADIN"); + if (nRndPaladin == 1) { int nResult = Random(30) + 1; // Generate a random number between 1 and 30 switch (nResult) { - case 1: - sPostfix = "the Quick"; - break; - case 2: - sPostfix = "the Quiet"; - break; - case 3: - sPostfix = "the Sharp"; - break; - case 4: - sPostfix = "the Sneak"; - break; - case 5: - sPostfix = "the Rogue"; - break; - case 6: - sPostfix = "the Footpad"; - break; - case 7: - sPostfix = "the Shadow"; - break; - case 8: - sPostfix = "the Nimble"; - break; - case 9: - sPostfix = "the Swift"; - break; - case 10: - sPostfix = "the Silent"; - break; - case 11: - sPostfix = "the Sly"; - break; - case 12: - sPostfix = "the Crafty"; - break; - case 13: - sPostfix = "the Cunning"; - break; - case 14: - sPostfix = "the Elusive"; - break; - case 15: - sPostfix = "the Deft"; - break; - case 16: - sPostfix = "the Guileful"; - break; - case 17: - sPostfix = "the Lurker"; - break; - case 18: - sPostfix = "the Trickster"; - break; - case 19: - sPostfix = "the Prowler"; - break; - case 20: - sPostfix = "the Skulker"; - break; - case 21: - sPostfix = "the Phantom"; - break; - case 22: - sPostfix = "the Wily"; - break; - case 23: - sPostfix = "the Mysterious"; - break; - case 24: - sPostfix = "the Furtive"; - break; - case 25: - sPostfix = "the Discreet"; - break; - case 26: - sPostfix = "the Spy"; - break; - case 27: - sPostfix = "the Veiled"; - break; - case 28: - sPostfix = "the Artful"; - break; - case 29: - sPostfix = "the Sleuth"; - break; - case 30: - sPostfix = "the Masked"; - break; + case 1: sPostfix = "the Righteous"; break; + case 2: sPostfix = "the Just"; break; + case 3: sPostfix = "the Defender"; break; + case 4: sPostfix = "the Virtuous"; break; + case 5: sPostfix = "the Crusader"; break; + case 6: sPostfix = "the Lightbringer"; break; + case 7: sPostfix = "the Faithful"; break; + case 8: sPostfix = "the Zealous"; break; + case 9: sPostfix = "the Beacon"; break; + case 10: sPostfix = "the Redeemer"; break; + case 11: sPostfix = "the Shield of Faith"; break; + case 12: sPostfix = "of the Sacred Flame"; break; + case 13: sPostfix = "the Lawful"; break; + case 14: sPostfix = "the Blessed"; break; + case 15: sPostfix = "the Chosen"; break; + case 16: sPostfix = "of the Holy Vow"; break; + case 17: sPostfix = "the Avenger"; break; + case 18: sPostfix = "the Purifier"; break; + case 19: sPostfix = "the Divine Hand"; break; + case 20: sPostfix = "the Sacred Blade"; break; + case 21: sPostfix = "the Lightforged"; break; + case 22: sPostfix = "the Protector"; break; + case 23: sPostfix = "the Illuminated"; break; + case 24: sPostfix = "of the Silver Oath"; break; + case 25: sPostfix = "the Guardian"; break; + case 26: sPostfix = "the Oathbound"; break; + case 27: sPostfix = "the Valiant"; break; + case 28: sPostfix = "the Seraphic"; break; + case 29: sPostfix = "the Golden Knight"; break; + case 30: sPostfix = "the True"; break; } } - int nRndBarb = GetLocalInt(OBJECT_SELF,"RND_BARBARIAN"); - if (nRndBarb == 1) + int nRndMonk = GetLocalInt(OBJECT_SELF, "RND_MONK"); + if (nRndMonk == 1) { - int nResult = Random(30) + 1; // Generate a random number between 1 and 30 + int nResult = Random(30) + 1; switch (nResult) { - case 1: - sPostfix = "the Barbarian"; - break; - case 2: - sPostfix = "the Destroyer"; - break; - case 3: - sPostfix = "of the Plains"; - break; - case 4: - sPostfix = "of Klar Clan"; - break; - case 5: - sPostfix = "the Rampager"; - break; - case 6: - sPostfix = "the Reaver"; - break; - case 7: - sPostfix = "the Savage"; - break; - case 8: - sPostfix = "the Berserker"; - break; - case 9: - sPostfix = "the Untamed"; - break; - case 10: - sPostfix = "the Fierce"; - break; - case 11: - sPostfix = "the Warbringer"; - break; - case 12: - sPostfix = "the Wild"; - break; - case 13: - sPostfix = "the Raider"; - break; - case 14: - sPostfix = "the Vicious"; - break; - case 15: - sPostfix = "the Ruthless"; - break; - case 16: - sPostfix = "the Savage"; - break; - case 17: - sPostfix = "the Bloodthirsty"; - break; - case 18: - sPostfix = "the Warlord"; - break; - case 19: - sPostfix = "the Brute"; - break; - case 20: - sPostfix = "the Fierce"; - break; - case 21: - sPostfix = "the Marauder"; - break; - case 22: - sPostfix = "the Howler"; - break; - case 23: - sPostfix = "the Ravager"; - break; - case 24: - sPostfix = "the Crusher"; - break; - case 25: - sPostfix = "the Frenzied"; - break; - case 26: - sPostfix = "the Beast"; - break; - case 27: - sPostfix = "the Juggernaut"; - break; - case 28: - sPostfix = "the Slayer"; - break; - case 29: - sPostfix = "the Rager"; - break; - case 30: - sPostfix = "the Conqueror"; - break; + case 1: sPostfix = "the Disciplined"; break; + case 2: sPostfix = "the Enlightened"; break; + case 3: sPostfix = "of the Open Palm"; break; + case 4: sPostfix = "of the Empty Hand"; break; + case 5: sPostfix = "the Ascetic"; break; + case 6: sPostfix = "the Calm"; break; + case 7: sPostfix = "the Wayfarer"; break; + case 8: sPostfix = "the Iron Fist"; break; + case 9: sPostfix = "the Centered"; break; + case 10: sPostfix = "of the Quiet Mind"; break; + case 11: sPostfix = "the Humble"; break; + case 12: sPostfix = "the Swift Palm"; break; + case 13: sPostfix = "the Inner Flame"; break; + case 14: sPostfix = "the Master"; break; + case 15: sPostfix = "of the Lotus Path"; break; + case 16: sPostfix = "the Patient"; break; + case 17: sPostfix = "the Balanced"; break; + case 18: sPostfix = "the Serene"; break; + case 19: sPostfix = "the Watchful"; break; + case 20: sPostfix = "the Disciple"; break; + case 21: sPostfix = "the Harmonious"; break; + case 22: sPostfix = "the Seeker"; break; + case 23: sPostfix = "the Breathless"; break; + case 24: sPostfix = "the Stilled Hand"; break; + case 25: sPostfix = "of Perfect Form"; break; + case 26: sPostfix = "the Tranquil"; break; + case 27: sPostfix = "the Unbound"; break; + case 28: sPostfix = "the Silent Step"; break; + case 29: sPostfix = "the Mindful"; break; + case 30: sPostfix = "the Flowing One"; break; } } - int nRndFight = GetLocalInt(OBJECT_SELF,"RND_FIGHTER"); - if (nRndFight == 1) - { - int nResult = Random(30) + 1; // Generate a random number between 1 and 30 - switch (nResult) - { - case 1: - sPostfix = "the Strong"; - break; - case 2: - sPostfix = "the Stout"; - break; - case 3: - sPostfix = "of the Blade"; - break; - case 4: - sPostfix = "of Tyr"; - break; - case 5: - sPostfix = "of Urik"; - break; - case 6: - sPostfix = "the Swordhand"; - break; - case 7: - sPostfix = "the Valiant"; - break; - case 8: - sPostfix = "the Brave"; - break; - case 9: - sPostfix = "the Defender"; - break; - case 10: - sPostfix = "the Just"; - break; - case 11: - sPostfix = "the Noble"; - break; - case 12: - sPostfix = "the Gallant"; - break; - case 13: - sPostfix = "the Protector"; - break; - case 14: - sPostfix = "the Shield"; - break; - case 15: - sPostfix = "the Champion"; - break; - case 16: - sPostfix = "the Guardian"; - break; - case 17: - sPostfix = "the Sentinel"; - break; - case 18: - sPostfix = "the Warrior"; - break; - case 19: - sPostfix = "the Stalwart"; - break; - case 20: - sPostfix = "the Ironclad"; - break; - case 21: - sPostfix = "the Blade"; - break; - case 22: - sPostfix = "the Swordsman"; - break; - case 23: - sPostfix = "the Vanguard"; - break; - case 24: - sPostfix = "the Lancer"; - break; - case 25: - sPostfix = "the Spearhead"; - break; - case 26: - sPostfix = "the Battlemaster"; - break; - case 27: - sPostfix = "the Blademaster"; - break; - case 28: - sPostfix = "the Warlord"; - break; - case 29: - sPostfix = "the Vanquisher"; - break; - case 30: - sPostfix = "the Swordmaster"; - break; - } + int nRndRogue = GetLocalInt(OBJECT_SELF,"RND_ROGUE"); + if (nRndRogue == 1) + { + int nResult = Random(30) + 1; + switch (nResult) + { + case 1: sPostfix = "the Quick"; break; + case 2: sPostfix = "the Quiet"; break; + case 3: sPostfix = "the Sharp"; break; + case 4: sPostfix = "the Sneak"; break; + case 5: sPostfix = "the Rogue"; break; + case 6: sPostfix = "the Footpad"; break; + case 7: sPostfix = "the Shadow"; break; + case 8: sPostfix = "the Nimble"; break; + case 9: sPostfix = "the Swift"; break; + case 10: sPostfix = "the Silent"; break; + case 11: sPostfix = "the Sly"; break; + case 12: sPostfix = "the Crafty"; break; + case 13: sPostfix = "the Cunning"; break; + case 14: sPostfix = "the Elusive"; break; + case 15: sPostfix = "the Deft"; break; + case 16: sPostfix = "the Guileful"; break; + case 17: sPostfix = "the Lurker"; break; + case 18: sPostfix = "the Trickster"; break; + case 19: sPostfix = "the Prowler"; break; + case 20: sPostfix = "the Skulker"; break; + case 21: sPostfix = "the Phantom"; break; + case 22: sPostfix = "the Wily"; break; + case 23: sPostfix = "the Mysterious"; break; + case 24: sPostfix = "the Furtive"; break; + case 25: sPostfix = "the Discreet"; break; + case 26: sPostfix = "the Spy"; break; + case 27: sPostfix = "the Veiled"; break; + case 28: sPostfix = "the Artful"; break; + case 29: sPostfix = "the Sleuth"; break; + case 30: sPostfix = "the Masked"; break; + } + } + + int nRndBarb = GetLocalInt(OBJECT_SELF,"RND_BARBARIAN"); + if (nRndBarb == 1) + { + int nResult = Random(30) + 1; + switch (nResult) + { + case 1: sPostfix = "the Barbarian"; break; + case 2: sPostfix = "the Destroyer"; break; + case 3: sPostfix = "of the Plains"; break; + case 4: sPostfix = "of Bear Clan"; break; + case 5: sPostfix = "the Rampager"; break; + case 6: sPostfix = "the Reaver"; break; + case 7: sPostfix = "the Savage"; break; + case 8: sPostfix = "the Berserker"; break; + case 9: sPostfix = "the Untamed"; break; + case 10: sPostfix = "the Fierce"; break; + case 11: sPostfix = "the Warbringer"; break; + case 12: sPostfix = "the Wild"; break; + case 13: sPostfix = "the Raider"; break; + case 14: sPostfix = "the Vicious"; break; + case 15: sPostfix = "the Ruthless"; break; + case 16: sPostfix = "the Savage"; break; + case 17: sPostfix = "the Bloodthirsty"; break; + case 18: sPostfix = "the Warlord"; break; + case 19: sPostfix = "the Brute"; break; + case 20: sPostfix = "the Fierce"; break; + case 21: sPostfix = "the Marauder"; break; + case 22: sPostfix = "the Howler"; break; + case 23: sPostfix = "the Ravager"; break; + case 24: sPostfix = "the Crusher"; break; + case 25: sPostfix = "the Frenzied"; break; + case 26: sPostfix = "the Beast"; break; + case 27: sPostfix = "the Juggernaut"; break; + case 28: sPostfix = "the Slayer"; break; + case 29: sPostfix = "the Rager"; break; + case 30: sPostfix = "the Conqueror"; break; + } } - int nRndCleric = GetLocalInt(OBJECT_SELF,"RND_CLERIC"); - if (nRndCleric == 1) - { - int nResult = Random(30) + 1; // Generate a random number between 1 and 30 - if (nResult == 1) - { - sPostfix = "the Pious"; - } - else if (nResult == 2) - { - sPostfix = "the Holy"; - } - else if (nResult == 3) - { - sPostfix = "the Priest"; - } - else if (nResult == 4) - { - sPostfix = "the Zealous"; - } - else if (nResult == 5) - { - sPostfix = "of Salt View"; - } - else if (nResult == 6) - { - sPostfix = "the Wise"; - } - else if (nResult == 7) - { - sPostfix = "the Devout"; - } - else if (nResult == 8) - { - sPostfix = "the Faithful"; - } - else if (nResult == 9) - { - sPostfix = "the Righteous"; - } - else if (nResult == 10) - { - sPostfix = "the Blessed"; - } - else if (nResult == 11) - { - sPostfix = "the Pure"; - } - else if (nResult == 12) - { - sPostfix = "the Sacred"; - } - else if (nResult == 13) - { - sPostfix = "the Benevolent"; - } - else if (nResult == 14) - { - sPostfix = "the Virtuous"; - } - else if (nResult == 15) - { - sPostfix = "the Saintly"; - } - else if (nResult == 16) - { - sPostfix = "the Healer"; - } - else if (nResult == 17) - { - sPostfix = "the Anointed"; - } - else if (nResult == 18) - { - sPostfix = "the Protector"; - } - else if (nResult == 19) - { - sPostfix = "the Merciful"; - } - else if (nResult == 20) - { - sPostfix = "the Revered"; - } - else if (nResult == 21) - { - sPostfix = "the Graceful"; - } - else if (nResult == 22) - { - sPostfix = "the Watchful"; - } - else if (nResult == 23) - { - sPostfix = "the Forgiving"; - } - else if (nResult == 24) - { - sPostfix = "the Humble"; - } - else if (nResult == 25) - { - sPostfix = "the Divine"; - } - else if (nResult == 26) - { - sPostfix = "the Preacher"; - } - else if (nResult == 27) - { - sPostfix = "the Illuminated"; - } - else if (nResult == 28) - { - sPostfix = "the Mystic"; - } - else if (nResult == 29) - { - sPostfix = "the Herald"; - } - else // nResult == 30 - { - sPostfix = "the Exalted"; - } + int nRndFight = GetLocalInt(OBJECT_SELF,"RND_FIGHTER"); + if (nRndFight == 1) + { + int nResult = Random(30) + 1; + switch (nResult) + { + case 1: sPostfix = "the Strong"; break; + case 2: sPostfix = "the Stout"; break; + case 3: sPostfix = "of Harrowdale"; break; + case 4: sPostfix = "of Tyr"; break; + case 5: sPostfix = "of Neverwinter"; break; + case 6: sPostfix = "the Swordhand"; break; + case 7: sPostfix = "the Valiant"; break; + case 8: sPostfix = "the Brave"; break; + case 9: sPostfix = "the Defender"; break; + case 10: sPostfix = "the Just"; break; + case 11: sPostfix = "the Noble"; break; + case 12: sPostfix = "the Gallant"; break; + case 13: sPostfix = "the Protector"; break; + case 14: sPostfix = "the Shield"; break; + case 15: sPostfix = "the Champion"; break; + case 16: sPostfix = "the Guardian"; break; + case 17: sPostfix = "the Sentinel"; break; + case 18: sPostfix = "the Warrior"; break; + case 19: sPostfix = "the Stalwart"; break; + case 20: sPostfix = "the Ironclad"; break; + case 21: sPostfix = "the Blade"; break; + case 22: sPostfix = "the Swordsman"; break; + case 23: sPostfix = "the Vanguard"; break; + case 24: sPostfix = "the Lancer"; break; + case 25: sPostfix = "the Spearhead"; break; + case 26: sPostfix = "the Battlemaster"; break; + case 27: sPostfix = "the Blademaster"; break; + case 28: sPostfix = "the Warlord"; break; + case 29: sPostfix = "the Vanquisher"; break; + case 30: sPostfix = "the Swordmaster"; break; + } } - - int nRndMage = GetLocalInt(OBJECT_SELF,"RND_MAGE"); - if (nRndMage == 1) - { - int nResult = Random(30) + 1; // Generate a random number between 1 and 30 - switch (nResult) - { - case 1: - sPostfix = "the Mad"; - break; - case 2: - sPostfix = "the Arcane"; - break; - case 3: - sPostfix = "the Black"; - break; - case 4: - sPostfix = "the Wizard"; - break; - case 5: - sPostfix = "of Ur-Draxa"; - break; - case 6: - sPostfix = "the Mage"; - break; - case 7: - sPostfix = "the Enigmatic"; - break; - case 8: - sPostfix = "the Mystical"; - break; - case 9: - sPostfix = "the Eldritch"; - break; - case 10: - sPostfix = "the Runeweaver"; - break; - case 11: - sPostfix = "the Sorcerous"; - break; - case 12: - sPostfix = "the Seer"; - break; - case 13: - sPostfix = "the Arcanist"; - break; - case 14: - sPostfix = "the Illustrious"; - break; - case 15: - sPostfix = "the Sage"; - break; - case 16: - sPostfix = "the Sorcerous"; - break; - case 17: - sPostfix = "the Occult"; - break; - case 18: - sPostfix = "the Arcane Adept"; - break; - case 19: - sPostfix = "the Spellbinder"; - break; - case 20: - sPostfix = "the Occultist"; - break; - case 21: - sPostfix = "the Conjurer"; - break; - case 22: - sPostfix = "the Seer"; - break; - case 23: - sPostfix = "the Invoker"; - break; - case 24: - sPostfix = "the Mysterious"; - break; - case 25: - sPostfix = "the Shrouded"; - break; - case 26: - sPostfix = "the Visionary"; - break; - case 27: - sPostfix = "the Spellweaver"; - break; - case 28: - sPostfix = "the Willbreaker"; - break; - case 29: - sPostfix = "the Charmer"; - break; - case 30: - sPostfix = "the Elementalist"; - break; - } + + int nRndCleric = GetLocalInt(OBJECT_SELF,"RND_CLERIC"); + if (nRndCleric == 1) + { + int nResult = Random(30) + 1; + switch (nResult) + { + case 1: sPostfix = "the Pious"; break; + case 2: sPostfix = "the Holy"; break; + case 3: sPostfix = "the Priest"; break; + case 4: sPostfix = "the Zealous"; break; + case 5: sPostfix = "of Phlan"; break; + case 6: sPostfix = "the Wise"; break; + case 7: sPostfix = "the Devout"; break; + case 8: sPostfix = "the Faithful"; break; + case 9: sPostfix = "the Righteous"; break; + case 10: sPostfix = "the Blessed"; break; + case 11: sPostfix = "the Pure"; break; + case 12: sPostfix = "the Sacred"; break; + case 13: sPostfix = "the Benevolent"; break; + case 14: sPostfix = "the Virtuous"; break; + case 15: sPostfix = "the Saintly"; break; + case 16: sPostfix = "the Healer"; break; + case 17: sPostfix = "the Anointed"; break; + case 18: sPostfix = "the Protector"; break; + case 19: sPostfix = "the Merciful"; break; + case 20: sPostfix = "the Revered"; break; + case 21: sPostfix = "the Graceful"; break; + case 22: sPostfix = "the Watchful"; break; + case 23: sPostfix = "the Forgiving"; break; + case 24: sPostfix = "the Humble"; break; + case 25: sPostfix = "the Divine"; break; + case 26: sPostfix = "the Preacher"; break; + case 27: sPostfix = "the Illuminated"; break; + case 28: sPostfix = "the Mystic"; break; + case 29: sPostfix = "the Herald"; break; + case 30: sPostfix = "the Exalted"; break; + } } - - int nRndBard = GetLocalInt(OBJECT_SELF,"RND_BARD"); - if (nRndBard == 1) - { - int nResult = Random(25) + 1; // Generate a random number between 1 and 25 - switch (nResult) - { - case 1: - sPostfix = "the Subtle"; - break; - case 2: - sPostfix = "the Veiled"; - break; - case 3: - sPostfix = "the Shadowed"; - break; - case 4: - sPostfix = "the Intriguer"; - break; - case 5: - sPostfix = "of Altaruk"; - break; - case 6: - sPostfix = "the Elusive"; - break; - case 7: - sPostfix = "the Mysterious"; - break; - case 8: - sPostfix = "the Cryptic"; - break; - case 9: - sPostfix = "the Insidious"; - break; - case 10: - sPostfix = "the Quiet"; - break; - case 11: - sPostfix = "the Sly"; - break; - case 12: - sPostfix = "the Covert"; - break; - case 13: - sPostfix = "the Furtive"; - break; - case 14: - sPostfix = "the Discreet"; - break; - case 15: - sPostfix = "the Subversive"; - break; - case 16: - sPostfix = "the Shrouded"; - break; - case 17: - sPostfix = "the Obscured"; - break; - case 18: - sPostfix = "the Clever"; - break; - case 19: - sPostfix = "the Enigmatic"; - break; - case 20: - sPostfix = "of Balic"; - break; - case 21: - sPostfix = "of Tyr"; - break; - case 22: - sPostfix = "of Raam"; - break; - case 23: - sPostfix = "of Urik"; - break; - case 24: - sPostfix = "the Crafty"; - break; - case 25: - sPostfix = "of Draj"; - break; - } + + int nRndMage = GetLocalInt(OBJECT_SELF,"RND_MAGE"); + if (nRndMage == 1) + { + int nResult = Random(30) + 1; + switch (nResult) + { + case 1: sPostfix = "the Mad"; break; + case 2: sPostfix = "the Arcane"; break; + case 3: sPostfix = "the Black"; break; + case 4: sPostfix = "the Wizard"; break; + case 5: sPostfix = "of Waterdeep"; break; + case 6: sPostfix = "the Mage"; break; + case 7: sPostfix = "the Enigmatic"; break; + case 8: sPostfix = "the Mystical"; break; + case 9: sPostfix = "the Eldritch"; break; + case 10: sPostfix = "the Runeweaver"; break; + case 11: sPostfix = "the Sorcerous"; break; + case 12: sPostfix = "the Seer"; break; + case 13: sPostfix = "the Arcanist"; break; + case 14: sPostfix = "the Illustrious"; break; + case 15: sPostfix = "the Sage"; break; + case 16: sPostfix = "the Sorcerous"; break; + case 17: sPostfix = "the Occult"; break; + case 18: sPostfix = "the Arcane Adept"; break; + case 19: sPostfix = "the Spellbinder"; break; + case 20: sPostfix = "the Occultist"; break; + case 21: sPostfix = "the Conjurer"; break; + case 22: sPostfix = "the Seer"; break; + case 23: sPostfix = "the Invoker"; break; + case 24: sPostfix = "the Mysterious"; break; + case 25: sPostfix = "the Shrouded"; break; + case 26: sPostfix = "the Visionary"; break; + case 27: sPostfix = "the Spellweaver"; break; + case 28: sPostfix = "the Willbreaker"; break; + case 29: sPostfix = "the Charmer"; break; + case 30: sPostfix = "the Elementalist"; break; + } } - - int nRndDruid = GetLocalInt(OBJECT_SELF,"RND_DRUID"); - if (nRndDruid == 1) - { - int nResult = Random(25) + 1; // Generate a random number between 1 and 25 - switch (nResult) - { - case 1: - sPostfix = "the Druid"; - break; - case 2: - sPostfix = "of the Forest"; - break; - case 3: - sPostfix = "of the Wild"; - break; - case 4: - sPostfix = "the Wolflord"; - break; - case 5: - sPostfix = "the Treelord"; - break; - case 6: - sPostfix = "the Verdant"; - break; - case 7: - sPostfix = "the Earthshaker"; - break; - case 8: - sPostfix = "the Feral"; - break; - case 9: - sPostfix = "of the Glade"; - break; - case 10: - sPostfix = "of the Crystal Forest"; - break; - case 11: - sPostfix = "the Thorned"; - break; - case 12: - sPostfix = "the Greenwarden"; - break; - case 13: - sPostfix = "the Naturebound"; - break; - case 14: - sPostfix = "the Forestborn"; - break; - case 15: - sPostfix = "the Spiritcaller"; - break; - case 16: - sPostfix = "the Leafblade"; - break; - case 17: - sPostfix = "the Mossy"; - break; - case 18: - sPostfix = "the Grovekeeper"; - break; - case 19: - sPostfix = "the Stormbringer"; - break; - case 20: - sPostfix = "the Earthshaper"; - break; - case 21: - sPostfix = "the Bramble"; - break; - case 22: - sPostfix = "of the Black Sands"; - break; - case 23: - sPostfix = "of the Silt Sea"; - break; - case 24: - sPostfix = "the Spiritbinder"; - break; - case 25: - sPostfix = "the Wildheart"; - break; - } + + int nRndBard = GetLocalInt(OBJECT_SELF,"RND_BARD"); + if (nRndBard == 1) + { + int nResult = Random(25) + 1; + switch (nResult) + { + case 1: sPostfix = "the Subtle"; break; + case 2: sPostfix = "the Veiled"; break; + case 3: sPostfix = "the Shadowed"; break; + case 4: sPostfix = "the Intriguer"; break; + case 5: sPostfix = "of Altaruk"; break; + case 6: sPostfix = "the Elusive"; break; + case 7: sPostfix = "the Mysterious"; break; + case 8: sPostfix = "the Cryptic"; break; + case 9: sPostfix = "the Insidious"; break; + case 10: sPostfix = "the Quiet"; break; + case 11: sPostfix = "the Sly"; break; + case 12: sPostfix = "the Covert"; break; + case 13: sPostfix = "the Furtive"; break; + case 14: sPostfix = "the Discreet"; break; + case 15: sPostfix = "the Subversive"; break; + case 16: sPostfix = "the Shrouded"; break; + case 17: sPostfix = "the Obscured"; break; + case 18: sPostfix = "the Clever"; break; + case 19: sPostfix = "the Enigmatic"; break; + case 20: sPostfix = "of Elventree"; break; + case 21: sPostfix = "of Melvaunt"; break; + case 22: sPostfix = "of Deepingdale"; break; + case 23: sPostfix = "of Skullport"; break; + case 24: sPostfix = "the Crafty"; break; + case 25: sPostfix = "of Amn"; break; + } } - - int nRndRanger = GetLocalInt(OBJECT_SELF,"RND_RANGER"); - if (nRndRanger == 1) - { - int nResult = Random(25) + 1; // Generate a random number between 1 and 25 - switch (nResult) - { - case 1: - sPostfix = "the Ranger"; - break; - case 2: - sPostfix = "of the Forest"; - break; - case 3: - sPostfix = "of the Wild"; - break; - case 4: - sPostfix = "the Strider"; - break; - case 5: - sPostfix = "the Venger"; - break; - case 6: - sPostfix = "the Pathfinder"; - break; - case 7: - sPostfix = "the Woodsman"; - break; - case 8: - sPostfix = "the Trailblazer"; - break; - case 9: - sPostfix = "the Hunter"; - break; - case 10: - sPostfix = "the Scout"; - break; - case 11: - sPostfix = "the Wayfarer"; - break; - case 12: - sPostfix = "the Outrider"; - break; - case 13: - sPostfix = "the Seeker"; - break; - case 14: - sPostfix = "the Sentinel"; - break; - case 15: - sPostfix = "the Forestborn"; - break; - case 16: - sPostfix = "the Survivalist"; - break; - case 17: - sPostfix = "the Tracker"; - break; - case 18: - sPostfix = "the Forager"; - break; - case 19: - sPostfix = "the Warder"; - break; - case 20: - sPostfix = "the Greenblade"; - break; - case 21: - sPostfix = "the Beastmaster"; - break; - case 22: - sPostfix = "the Thornhunter"; - break; - case 23: - sPostfix = "of the Deepwood"; - break; - case 24: - sPostfix = "of the Roughlands"; - break; - case 25: - sPostfix = "the Wilderness Guide"; - break; - } + + int nRndDruid = GetLocalInt(OBJECT_SELF,"RND_DRUID"); + if (nRndDruid == 1) + { + int nResult = Random(25) + 1; + switch (nResult) + { + case 1: sPostfix = "the Druid"; break; + case 2: sPostfix = "of the Forest"; break; + case 3: sPostfix = "of the Wild"; break; + case 4: sPostfix = "the Wolflord"; break; + case 5: sPostfix = "the Treelord"; break; + case 6: sPostfix = "the Verdant"; break; + case 7: sPostfix = "the Earthshaker"; break; + case 8: sPostfix = "the Feral"; break; + case 9: sPostfix = "of the Glade"; break; + case 10: sPostfix = "of the Crystal Forest"; break; + case 11: sPostfix = "the Thorned"; break; + case 12: sPostfix = "the Greenwarden"; break; + case 13: sPostfix = "the Naturebound"; break; + case 14: sPostfix = "the Forestborn"; break; + case 15: sPostfix = "the Spiritcaller"; break; + case 16: sPostfix = "the Leafblade"; break; + case 17: sPostfix = "the Mossy"; break; + case 18: sPostfix = "the Grovekeeper"; break; + case 19: sPostfix = "the Stormbringer"; break; + case 20: sPostfix = "the Earthshaper"; break; + case 21: sPostfix = "the Bramble"; break; + case 22: sPostfix = "of the Black Sands"; break; + case 23: sPostfix = "of the Silt Sea"; break; + case 24: sPostfix = "the Spiritbinder"; break; + case 25: sPostfix = "the Wildheart"; break; + } + } + + int nRndRanger = GetLocalInt(OBJECT_SELF,"RND_RANGER"); + if (nRndRanger == 1) + { + int nResult = Random(25) + 1; + switch (nResult) + { + case 1: sPostfix = "the Ranger"; break; + case 2: sPostfix = "of the Forest"; break; + case 3: sPostfix = "of the Wild"; break; + case 4: sPostfix = "the Strider"; break; + case 5: sPostfix = "the Venger"; break; + case 6: sPostfix = "the Pathfinder"; break; + case 7: sPostfix = "the Woodsman"; break; + case 8: sPostfix = "the Trailblazer"; break; + case 9: sPostfix = "the Hunter"; break; + case 10: sPostfix = "the Scout"; break; + case 11: sPostfix = "the Wayfarer"; break; + case 12: sPostfix = "the Outrider"; break; + case 13: sPostfix = "the Seeker"; break; + case 14: sPostfix = "the Sentinel"; break; + case 15: sPostfix = "the Forestborn"; break; + case 16: sPostfix = "the Survivalist"; break; + case 17: sPostfix = "the Tracker"; break; + case 18: sPostfix = "the Forager"; break; + case 19: sPostfix = "the Warder"; break; + case 20: sPostfix = "the Greenblade"; break; + case 21: sPostfix = "the Beastmaster"; break; + case 22: sPostfix = "the Thornhunter"; break; + case 23: sPostfix = "of the Deepwood"; break; + case 24: sPostfix = "of the Roughlands"; break; + case 25: sPostfix = "the Wilderness Guide"; break; + } } - - if (sRandomName != "") { if (sRandomName == "RANDOM") @@ -1618,7 +651,7 @@ void ms_Nomenclature(object oNPC = OBJECT_SELF) sRandomName = sBaseRace +" "+ sTitle; } - SetName(oNPC, (sRandomName)); + DelayCommand(0.0f, SetName(oNPC, (sRandomName))); return; } } @@ -1691,10 +724,64 @@ string ms_RandomLastName(object oNPC = OBJECT_SELF) return Name; } -// Function to get the class-based level title based on the class type +int GetHighestClassType(object oNPC = OBJECT_SELF) +{ + if (!GetIsObjectValid(oNPC)) return -1; + + int nBestClass = -1; + int nBestLevel = -1; + int i; + int nClass; + int nLevel; + int nMaxClasses = 254; + + i = 1; + while (i <= nMaxClasses) + { + nClass = GetClassByPosition(i, oNPC); + if (nClass != -1) + { + // skip racial types + if (nClass == CLASS_TYPE_ABERRATION || + nClass == CLASS_TYPE_ANIMAL || + nClass == CLASS_TYPE_BEAST || + nClass == CLASS_TYPE_CONSTRUCT || + nClass == CLASS_TYPE_DRAGON || + nClass == CLASS_TYPE_ELEMENTAL || + nClass == CLASS_TYPE_FEY || + nClass == CLASS_TYPE_GIANT || + nClass == CLASS_TYPE_HUMANOID || + nClass == CLASS_TYPE_MAGICAL_BEAST || + nClass == CLASS_TYPE_MONSTROUS || + nClass == CLASS_TYPE_OOZE || + nClass == CLASS_TYPE_OUTSIDER || + nClass == CLASS_TYPE_PLANT || + nClass == CLASS_TYPE_SHAPECHANGER || + nClass == CLASS_TYPE_UNDEAD || + nClass == CLASS_TYPE_VERMIN) + { + // skip + } + else + { + nLevel = GetLevelByClass(nClass, oNPC); + if (nLevel > nBestLevel) + { + nBestLevel = nLevel; + nBestClass = nClass; + + } + } + } + i = i + 1; + } + + return nBestClass; +} + string GetClassLevelTitle(int nClassType) { - object oCreature = OBJECT_SELF; // Assuming this function is called on a creature object + object oCreature = OBJECT_SELF; int nLevel = GetLevelByClass(nClassType, oCreature); int nGender = GetGender(oCreature); @@ -1703,725 +790,276 @@ string GetClassLevelTitle(int nClassType) switch (nClassType) { - case CLASS_TYPE_BARBARIAN: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Brute" ; - break; - - case 4: case 5: - sTitle = "Vandal"; break; - - case 6: - if (nGender == 1) - {sTitle = "Plunderess"; break;} - else - {sTitle = "Plunderer"; break;} - - case 7: - sTitle = "Pillager"; break; - - case 8: - sTitle = "Marauder"; break; - - case 9: - sTitle = "Reaver"; break; - - case 10: - sTitle = "Barbarian"; break; - - case 11: - sTitle = "Mauler"; break; - - case 12: - sTitle = "Ravager"; break; - - case 13: - sTitle = "Slaughterer"; break; - - case 14: - sTitle = "Destroyer"; break; - - case 15: - if (nGender == 1) - {sTitle = "Chieftainess"; break;} - else - {sTitle = "Chieftain"; break;} - - case 16: - sTitle = "Bloodletter"; break; - - case 17: - sTitle = "Rampager"; break; - - case 18: - sTitle = "Slayer"; break; - - case 19: - sTitle = "Warmonger"; break; - - case 20: - if (nGender == 1) - {sTitle = "High Chieftainess"; break;} - else - {sTitle = "High Chieftain"; break;} - - default: - if (nGender == 1) - {sTitle = "Conqueress"; break;} - else - {sTitle = "Conqueror"; break;} - - } - - case CLASS_TYPE_ROGUE: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Lookout" ; - break; - - case 4: case 5: - sTitle = "Outlaw"; break; - - case 6: - sTitle = "Scalawag"; break; - - case 7: - sTitle = "Creeper"; break; - - case 8: - sTitle = "Larker"; break; - - case 9: - sTitle = "Footpad"; break; - - case 10: - sTitle = "Rogue"; break; - - case 11: - sTitle = "Cutpurse"; break; - - case 12: - sTitle = "Thief"; break; - - case 13: - sTitle = "Pilferer"; break; - - case 14: - sTitle = "Robber"; break; - - case 15: - sTitle = "Sharper"; break; - - case 16: - sTitle = "Burglar"; break; - - case 17: - sTitle = "Filcher"; break; - - case 18: - sTitle = "Scoundrel"; break; - - case 19: - sTitle = "Knave"; break; - - case 20: - sTitle = "Prowler"; break; - - default: - sTitle = "Master Rogue"; break; - - } - - case CLASS_TYPE_BARD: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Crier" ; - break; - - case 4: case 5: - if (nGender == 1) - {sTitle = "Chantress"; break;} - else - {sTitle = "Chanter"; break;} - - case 6: - sTitle = "Skop"; break; - - case 7: - sTitle = "Accompanist"; break; - - case 8: - sTitle = "Rhymer"; break; - - case 9: - sTitle = "Singer"; break; - - case 10: - sTitle = "Balladeer"; break; - - case 11: - if (nGender == 1) - {sTitle = "Cantoress"; break;} - else - {sTitle = "Cantor"; break;} - - case 12: - sTitle = "Lutenist"; break; - - case 13: - sTitle = "Melodist"; break; - - case 14: - sTitle = "Lyrist"; break; - - case 15: - sTitle = "Jongleur"; break; - - case 16: - sTitle = "Loreweaver"; break; - - case 17: - sTitle = "Chronicler"; break; - - case 18: - sTitle = "Muse"; break; - - case 19: - if (nGender == 1) - {sTitle = "Rhapsode"; break;} - else - {sTitle = "Rhapsodist"; break;} - - case 20: - sTitle = "Bard"; break; - - case 21: - sTitle = "Raconteur"; break; - - case 22: - sTitle = "Siren"; break; - - case 23: - sTitle = "Songsmith"; break; - - case 24: - sTitle = "Versifer"; break; - - case 25: - sTitle = "Minstrel"; break; - - case 26: - sTitle = "Sonneteer"; break; - - case 27: - if (nGender == 1) - {sTitle = "Trobairitz"; break;} - else - {sTitle = "Troubadour"; break;} - - case 28: - sTitle = "Citharist"; break; - - case 29: - sTitle = "High Minstrel"; break; - - default: - sTitle = "Master Bard"; break; - - } - - case CLASS_TYPE_SORCERER: - case CLASS_TYPE_WIZARD: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Apprentice" ; - break; - - case 4: case 5: - sTitle = "Adept"; break; - - case 6: - sTitle = "Journeymage"; break; - - case 7: - sTitle = "Hedge Mage"; break; - - case 8: - sTitle = "Magician"; break; - - case 9: - sTitle = "Prestidigitator"; break; - - case 10: - sTitle = "Wizard"; break; - - case 11: - sTitle = "Sage"; break; - - case 12: - sTitle = "Visionary"; break; - - case 13: - sTitle = "Loremaster"; break; - - case 14: - sTitle = "Mage"; break; - - case 15: - sTitle = "Fatespinner"; break; - - case 16: - sTitle = "Cabalist"; break; - - case 17: - sTitle = "Thaumaturge"; break; - - case 18: - sTitle = "Theurgist"; break; - - case 19: - sTitle = "Augur"; break; - - case 20: - sTitle = "Spellbinder"; break; - - default: - sTitle = "Archmage"; break; - - } - - case CLASS_TYPE_CLERIC: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Candidate" ; - break; - - case 4: case 5: - sTitle = "Aspirant"; break; - - case 6: - sTitle = "Novice"; break; - - case 7: - sTitle = "Acolyte"; break; - - case 8: - sTitle = "Initiate"; break; - - case 9: - if (nGender == 1) - {sTitle = "Priestess"; break;} - else - {sTitle = "Priest"; break;} - - case 10: - sTitle = "Cleric"; break; - - case 11: - sTitle = "Curate"; break; - - case 12: - sTitle = "Apostle"; break; - - case 13: - sTitle = "Ovate"; break; - - case 14: - sTitle = "Missionary"; break; - - case 15: - if (nGender == 1) - {sTitle = "Canoness"; break;} - else - {sTitle = "Canon"; break;} - - case 16: - if (nGender == 1) - {sTitle = "Abbotess"; break;} - else - {sTitle = "Abbot"; break;} - - case 17: - sTitle = "Bishop"; break; - - case 18: - if (nGender == 1) - {sTitle = "Matriarch"; break;} - else - {sTitle = "Patriarch"; break;} - - case 19: - sTitle = "Preacher"; break; - - default: - if (nGender == 1) - {sTitle = "High Priestess"; break;} - else - {sTitle = "High Priest"; break;} - - } + case CLASS_TYPE_BARBARIAN: + switch(nLevel) + { + case 1: case 2: case 3: sTitle = "Brute"; break; + case 4: case 5: sTitle = "Vandal"; break; + case 6: sTitle = (nGender == 1) ? "Plunderess" : "Plunderer"; break; + case 7: sTitle = "Pillager"; break; + case 8: sTitle = "Marauder"; break; + case 9: sTitle = "Reaver"; break; + case 10: sTitle = "Barbarian"; break; + case 11: sTitle = "Mauler"; break; + case 12: sTitle = "Ravager"; break; + case 13: sTitle = "Slaughterer"; break; + case 14: sTitle = "Destroyer"; break; + case 15: sTitle = (nGender == 1) ? "Chieftainess" : "Chieftain"; break; + case 16: sTitle = "Bloodletter"; break; + case 17: sTitle = "Rampager"; break; + case 18: sTitle = "Slayer"; break; + case 19: sTitle = "Warmonger"; break; + case 20: sTitle = (nGender == 1) ? "High Chieftainess" : "High Chieftain"; break; + default: sTitle = (nGender == 1) ? "Conqueress" : "Conqueror"; break; + } + break; + + case CLASS_TYPE_ROGUE: + switch(nLevel) + { + case 1: case 2: case 3: sTitle = "Lookout"; break; + case 4: case 5: sTitle = "Outlaw"; break; + case 6: sTitle = "Scalawag"; break; + case 7: sTitle = "Creeper"; break; + case 8: sTitle = "Larker"; break; + case 9: sTitle = "Footpad"; break; + case 10: sTitle = "Rogue"; break; + case 11: sTitle = "Cutpurse"; break; + case 12: sTitle = "Thief"; break; + case 13: sTitle = "Pilferer"; break; + case 14: sTitle = "Robber"; break; + case 15: sTitle = "Sharper"; break; + case 16: sTitle = "Burglar"; break; + case 17: sTitle = "Filcher"; break; + case 18: sTitle = "Scoundrel"; break; + case 19: sTitle = "Knave"; break; + case 20: sTitle = "Prowler"; break; + default: sTitle = "Master Rogue"; break; + } + break; + + case CLASS_TYPE_BARD: + switch(nLevel) + { + case 1: case 2: case 3: sTitle = "Crier"; break; + case 4: case 5: sTitle = (nGender == 1) ? "Chantress" : "Chanter"; break; + case 6: sTitle = "Skop"; break; + case 7: sTitle = "Accompanist"; break; + case 8: sTitle = "Rhymer"; break; + case 9: sTitle = "Singer"; break; + case 10: sTitle = "Balladeer"; break; + case 11: sTitle = (nGender == 1) ? "Cantoress" : "Cantor"; break; + case 12: sTitle = "Lutenist"; break; + case 13: sTitle = "Melodist"; break; + case 14: sTitle = "Lyrist"; break; + case 15: sTitle = "Jongleur"; break; + case 16: sTitle = "Loreweaver"; break; + case 17: sTitle = "Chronicler"; break; + case 18: sTitle = "Muse"; break; + case 19: sTitle = (nGender == 1) ? "Rhapsode" : "Rhapsodist"; break; + case 20: sTitle = "Bard"; break; + case 21: sTitle = "Raconteur"; break; + case 22: sTitle = "Siren"; break; + case 23: sTitle = "Songsmith"; break; + case 24: sTitle = "Versifer"; break; + case 25: sTitle = "Minstrel"; break; + case 26: sTitle = "Sonneteer"; break; + case 27: sTitle = (nGender == 1) ? "Trobairitz" : "Troubadour"; break; + case 28: sTitle = "Citharist"; break; + case 29: sTitle = "High Minstrel"; break; + default: sTitle = "Master Bard"; break; + } + break; + + case CLASS_TYPE_SORCERER: + case CLASS_TYPE_WIZARD: + switch(nLevel) + { + case 1: case 2: case 3: sTitle = "Apprentice"; break; + case 4: case 5: sTitle = "Adept"; break; + case 6: sTitle = "Journeymage"; break; + case 7: sTitle = "Hedge Mage"; break; + case 8: sTitle = "Magician"; break; + case 9: sTitle = "Prestidigitator"; break; + case 10: sTitle = "Wizard"; break; + case 11: sTitle = "Sage"; break; + case 12: sTitle = "Visionary"; break; + case 13: sTitle = "Loremaster"; break; + case 14: sTitle = "Mage"; break; + case 15: sTitle = "Fatespinner"; break; + case 16: sTitle = "Cabalist"; break; + case 17: sTitle = "Thaumaturge"; break; + case 18: sTitle = "Theurgist"; break; + case 19: sTitle = "Augur"; break; + case 20: sTitle = "Spellbinder"; break; + default: sTitle = "Archmage"; break; + } + break; + + case CLASS_TYPE_CLERIC: + switch(nLevel) + { + case 1: case 2: case 3: sTitle = "Candidate"; break; + case 4: case 5: sTitle = "Aspirant"; break; + case 6: sTitle = "Novice"; break; + case 7: sTitle = "Acolyte"; break; + case 8: sTitle = "Initiate"; break; + case 9: sTitle = (nGender == 1) ? "Priestess" : "Priest"; break; + case 10: sTitle = "Cleric"; break; + case 11: sTitle = "Curate"; break; + case 12: sTitle = "Apostle"; break; + case 13: sTitle = "Ovate"; break; + case 14: sTitle = "Missionary"; break; + case 15: sTitle = (nGender == 1) ? "Canoness" : "Canon"; break; + case 16: sTitle = (nGender == 1) ? "Abbotess" : "Abbot"; break; + case 17: sTitle = "Bishop"; break; + case 18: sTitle = (nGender == 1) ? "Matriarch" : "Patriarch"; break; + case 19: sTitle = "Preacher"; break; + default: sTitle = (nGender == 1) ? "High Priestess" : "High Priest"; break; + } + break; + + case CLASS_TYPE_DRUID: + switch(nLevel) + { + case 1: case 2: case 3: sTitle = "Initiate"; break; + case 4: case 5: sTitle = "Devotee"; break; + case 6: sTitle = "Beastling"; break; + case 7: sTitle = "Grovelurker"; break; + case 8: sTitle = "Shaper"; break; + case 9: sTitle = "Springwalker"; break; + case 10: sTitle = "Druid"; break; + case 11: sTitle = "Naturekin"; break; + case 12: sTitle = "Treewarden"; break; + case 13: sTitle = "Auspex"; break; + case 14: sTitle = "Haruspex"; break; + case 15: sTitle = "Student of Stones"; break; + case 16: sTitle = "Student of Waters"; break; + case 17: sTitle = "Student of Forests"; break; + case 18: sTitle = "Student of Winds"; break; + case 19: sTitle = "Student of Changes"; break; + case 20: sTitle = "Pathwarden"; break; + default: sTitle = "Archdruid"; break; + } + break; + + case CLASS_TYPE_FIGHTER: + switch(nLevel) + { + case 1: case 2: case 3: sTitle = "Guard"; break; + case 4: sTitle = "Elite Guard"; break; + case 5: case 6: sTitle = "Warrior"; break; + case 7: sTitle = "Elite Warrior"; break; + case 8: sTitle = "Soldier"; break; + case 9: sTitle = "Enforcer"; break; + case 10: sTitle = "Fighter"; break; + case 11: sTitle = "Skirmisher"; break; + case 12: sTitle = "Veteran"; break; + case 13: sTitle = "Armiger"; break; + case 14: sTitle = "Myrmidon"; break; + case 15: sTitle = "Hero"; break; + case 16: sTitle = "Vanguard"; break; + case 17: sTitle = "Sentinel"; break; + case 18: sTitle = "Dominator"; break; + case 19: sTitle = "Warmonger"; break; + case 20: sTitle = "Champion"; break; + default: sTitle = "Grandmaster"; break; + } + break; + + case CLASS_TYPE_MONK: + switch(nLevel) + { + case 1: sTitle = "Trainee"; break; + case 2: sTitle = "Initiate"; break; + case 3: sTitle = "Novice"; break; + case 4: sTitle = "Neophyte"; break; + case 5: sTitle = "Aspirant"; break; + case 6: sTitle = "Acolyte"; break; + case 7: sTitle = "Devotee"; break; + case 8: sTitle = "Disciple"; break; + case 9: sTitle = "Adept"; break; + case 10: sTitle = "Ascetic"; break; + case 11: sTitle = "Pilgrim"; break; + case 12: sTitle = "Master"; break; + case 13: sTitle = "Anchorite"; break; + case 14: sTitle = "Mystic"; break; + case 15: sTitle = "Meditator"; break; + case 16: sTitle = "Seeker"; break; + case 17: sTitle = "Guru"; break; + case 18: sTitle = "Sensei"; break; + case 19: sTitle = "Sannyasi"; break; + case 20: sTitle = "Exemplar"; break; + case 21: sTitle = "Transcendent"; break; + default: sTitle = "High Master"; break; + } + break; - case CLASS_TYPE_DRUID: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Initiate" ; - break; - - case 4: case 5: - sTitle = "Devotee"; break; - - case 6: - sTitle = "Beastling"; break; - - case 7: - sTitle = "Grovelurker"; break; - - case 8: - sTitle = "Shaper"; break; - - case 9: - sTitle = "Springwalker"; break; - - case 10: - sTitle = "Druid"; break; - - case 11: - sTitle = "Naturekin"; break; - - case 12: - sTitle = "Treewarden"; break; - - case 13: - sTitle = "Auspex"; break; - - case 14: - sTitle = "Haruspex"; break; - - case 15: - sTitle = "Student of Stones"; break; - - case 16: - sTitle = "Student of Waters"; break; - - case 17: - sTitle = "Student of Forests"; break; - - case 18: - sTitle = "Student of Winds"; break; - - case 19: - sTitle = "Student of Changes"; break; - - case 20: - sTitle = "Pathwarden"; break; - - default: - sTitle = "Archdruid"; break; - - } - - case CLASS_TYPE_FIGHTER: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Guard"; - break; - - case 4: - sTitle = "Elite Guard"; break; - - case 5: case 6: - sTitle = "Warrior"; break; - - case 7: - sTitle = "Elite Warrior"; break; - - case 8: - sTitle = "Soldier"; break; - - case 9: - sTitle = "Enforcer"; break; - - case 10: - sTitle = "Fighter"; break; - - case 11: - sTitle = "Skirmisher"; break; - - case 12: - sTitle = "Veteran"; break; - - case 13: - sTitle = "Armiger"; break; - - case 14: - sTitle = "Myrmidon"; break; - - case 15: - sTitle = "Hero"; break; - - case 16: - sTitle = "Vanguard"; break; - - case 17: - sTitle = "Sentinel"; break; - - case 18: - sTitle = "Dominator"; break; - - case 19: - sTitle = "Warmonger"; break; - - case 20: - sTitle = "Champion"; break; - - default: - sTitle = "Grandmaster"; break; - - } - - case CLASS_TYPE_MONK: - switch(nLevel) - { - case 1: - sTitle = "Trainee"; break; - - case 2: - sTitle = "Initiate"; break; - - case 3: - sTitle = "Novice"; break; + case CLASS_TYPE_PALADIN: + switch(nLevel) + { + case 1: sTitle = "Advocate"; break; + case 2: sTitle = "Initiate"; break; + case 3: sTitle = "Squire"; break; + case 4: sTitle = "Gallant"; break; + case 5: sTitle = "Emissary"; break; + case 6: sTitle = "Guardian"; break; + case 7: sTitle = "Devotee"; break; + case 8: sTitle = "Disciple"; break; + case 9: sTitle = "Adept"; break; + case 10: sTitle = "Ascetic"; break; + case 11: sTitle = "Pilgrim"; break; + case 12: sTitle = "Master"; break; + case 13: sTitle = "Anchorite"; break; + case 14: sTitle = "Mystic"; break; + case 15: sTitle = "Meditator"; break; + case 16: sTitle = "Seeker"; break; + case 17: sTitle = "Guru"; break; + case 18: sTitle = "Sensei"; break; + case 19: sTitle = "Sannyasi"; break; + case 20: sTitle = "Exemplar"; break; + case 21: sTitle = "Transcendent"; break; + default: sTitle = "High Master"; break; + } + break; + + case CLASS_TYPE_RANGER: + switch(nLevel) + { + case 1: case 2: case 3: sTitle = "Greenhorn"; break; + case 4: case 5: sTitle = "Tenderfoot"; break; + case 6: sTitle = "Vagrant"; break; + case 7: sTitle = "Tramp"; break; + case 8: sTitle = "Nomad"; break; + case 9: sTitle = "Wanderer"; break; + case 10: sTitle = "Ranger"; break; + case 11: sTitle = "Rambler"; break; + case 12: sTitle = "Traveler"; break; + case 13: sTitle = "Sojourner"; break; + case 14: sTitle = "Outrider"; break; + case 15: sTitle = "Wayfarer"; break; + case 16: sTitle = "Excursionist"; break; + case 17: sTitle = "Trekker"; break; + case 18: sTitle = "Trailblazer"; break; + case 19: sTitle = "Woodsman"; break; + case 20: sTitle = "High Ranger"; break; + case 21: sTitle = "Ranger"; break; + case 22: sTitle = "Rambler"; break; + case 23: sTitle = "Traveler"; break; + case 24: sTitle = "Sojourner"; break; + case 25: sTitle = "Outrider"; break; + case 26: sTitle = "Wayfarer"; break; + case 27: sTitle = "Excursionist"; break; + case 28: sTitle = "Trekker"; break; + case 29: sTitle = "Trailblazer"; break; + default: sTitle = "Ranger Lord"; break; + } + break; + } - case 4: - sTitle = "Neophyte"; break; - - case 5: - sTitle = "Aspirant"; break; - - case 6: - sTitle = "Acolyte"; break; - - case 7: - sTitle = "Devotee"; break; - - case 8: - sTitle = "Disciple"; break; - - case 9: - sTitle = "Adept"; break; - - case 10: - sTitle = "Ascetic"; break; - - case 11: - sTitle = "Pilgrim"; break; - - case 12: - sTitle = "Master"; break; - - case 13: - sTitle = "Anchorite"; break; - - case 14: - sTitle = "Mystic"; break; - - case 15: - sTitle = "Meditator"; break; - - case 16: - sTitle = "Seeker"; break; - - case 17: - sTitle = "Guru"; break; - - case 18: - sTitle = "Sensei"; break; - - case 19: - sTitle = "Sannyasi"; break; - - case 20: - sTitle = "Exemplar"; break; - - case 21: - sTitle = "Transcendent"; break; - - default: - sTitle = "High Master"; break; - - } - - case CLASS_TYPE_PALADIN: - switch(nLevel) - { - case 1: - sTitle = "Advocate"; break; - - case 2: - sTitle = "Initiate"; break; - - case 3: - sTitle = "Squire"; break; - - case 4: - sTitle = "Gallant"; break; - - case 5: - sTitle = "Emissary"; break; - - case 6: - sTitle = "Guardian"; break; - - case 7: - sTitle = "Devotee"; break; - - case 8: - sTitle = "Disciple"; break; - - case 9: - sTitle = "Adept"; break; - - case 10: - sTitle = "Ascetic"; break; - - case 11: - sTitle = "Pilgrim"; break; - - case 12: - sTitle = "Master"; break; - - case 13: - sTitle = "Anchorite"; break; - - case 14: - sTitle = "Mystic"; break; - - case 15: - sTitle = "Meditator"; break; - - case 16: - sTitle = "Seeker"; break; - - case 17: - sTitle = "Guru"; break; - - case 18: - sTitle = "Sensei"; break; - - case 19: - sTitle = "Sannyasi"; break; - - case 20: - sTitle = "Exemplar"; break; - - case 21: - sTitle = "Transcendent"; break; - - default: - sTitle = "High Master"; break; - - } - - case CLASS_TYPE_RANGER: - switch(nLevel) - { - case 1: case 2: case 3: - sTitle = "Greenhorn" ; - break; - - case 4: case 5: - sTitle = "Tenderfoot"; break; - - case 6: - sTitle = "Vagrant"; break; - - case 7: - sTitle = "Tramp"; break; - - case 8: - sTitle = "Nomad"; break; - - case 9: - sTitle = "Wanderer"; break; - - case 10: - sTitle = "Ranger"; break; - - case 11: - sTitle = "Rambler"; break; - - case 12: - sTitle = "Traveler"; break; - - case 13: - sTitle = "Sojourner"; break; - - case 14: - sTitle = "Outrider"; break; - - case 15: - sTitle = "Wayfarer"; break; - - case 16: - sTitle = "Excursionist"; break; - - case 17: - sTitle = "Trekker"; break; - - case 18: - sTitle = "Trailblazer"; break; - - case 19: - sTitle = "Woodsman"; break; - - case 20: - sTitle = "High Ranger"; break; - - case 21: - sTitle = "Ranger"; break; - - case 22: - sTitle = "Rambler"; break; - - case 23: - sTitle = "Traveler"; break; - - case 24: - sTitle = "Sojourner"; break; - - case 25: - sTitle = "Outrider"; break; - - case 26: - sTitle = "Wayfarer"; break; - - case 27: - sTitle = "Excursionist"; break; - - case 28: - sTitle = "Trekker"; break; - - case 29: - sTitle = "Trailblazer"; break; - - default: - sTitle = "Ranger Lord"; break; - - } - - } - - return sTitle; + return sTitle; } -//:: Function to get the highest class level of an object, excluding racialtype classes int GetHighestClassLevel(object oCreature) { int nHighestLevel = -1; @@ -2467,4 +1105,4 @@ int GetHighestClassLevel(object oCreature) return nHighestLevel; } -//::void main (){} +//::void main (){} \ No newline at end of file