diff --git a/_haks/Compiler - PoA - Haks.bat b/_haks/Compiler - PoA - Haks.bat index e207ea03..cd7dd226 100644 --- a/_haks/Compiler - PoA - Haks.bat +++ b/_haks/Compiler - PoA - Haks.bat @@ -1,5 +1,5 @@ :loop -"C:\NWN Work\nwnsc.exe" -o -w -n "C:\Games\Steam\steamapps\common\Neverwinter Nights" -i "D:\NWN Repos\PoA_PRC8\_haks\poa_exp_abilities";"D:\NWN Repos\PRC8\nwn\nwnprc\trunk\include" "D:\NWN Repos\PoA_PRC8\_haks\poa_exp_abilities\*.nss" +"C:\NWN Work\nwnsc.exe" -o -w -n "C:\Games\Steam\steamapps\common\Neverwinter Nights" -i "D:\NWN Repos\PoA_PRC8\_haks\poa_exp_ability";"D:\NWN Repos\PRC8\nwn\nwnprc\trunk\include" "D:\NWN Repos\PoA_PRC8\_haks\poa_exp_ability\*.nss" if %errorLevel% == -1 goto :loop "C:\NWN Work\nwnsc.exe" -o -w -n "C:\Games\Steam\steamapps\common\Neverwinter Nights" -i "D:\NWN Repos\PoA_PRC8\_haks\poa_exp_spells";"D:\NWN Repos\PRC8\nwn\nwnprc\trunk\include" "D:\NWN Repos\PoA_PRC8\_haks\poa_exp_spells\*.nss" diff --git a/_haks/poa_exp_ability/PRC_vampdrain.ncs b/_haks/poa_exp_ability/PRC_vampdrain.ncs index 0e331ab2..6430f7a9 100644 Binary files a/_haks/poa_exp_ability/PRC_vampdrain.ncs and b/_haks/poa_exp_ability/PRC_vampdrain.ncs differ diff --git a/_haks/poa_exp_ability/PRC_vampdrain.nss b/_haks/poa_exp_ability/PRC_vampdrain.nss index 23eab8e7..ec00fa46 100644 --- a/_haks/poa_exp_ability/PRC_vampdrain.nss +++ b/_haks/poa_exp_ability/PRC_vampdrain.nss @@ -71,6 +71,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY); //Enter Metamagic conditions //-------------------------------------------------------------------------- nDamage = PRCMaximizeOrEmpower(6,nDDice,nMetaMagic); + nDamage += SpellDamagePerDice(OBJECT_SELF, nDDice); int nDuration = nCasterLevel/3; if ((nMetaMagic & METAMAGIC_EXTEND)) diff --git a/_haks/poa_exp_ability/inv_adeptbreath.ncs b/_haks/poa_exp_ability/inv_adeptbreath.ncs index 84397137..03335359 100644 Binary files a/_haks/poa_exp_ability/inv_adeptbreath.ncs and b/_haks/poa_exp_ability/inv_adeptbreath.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_aurablnda.ncs b/_haks/poa_exp_ability/nw_s1_aurablnda.ncs index 432db91d..5350fff6 100644 Binary files a/_haks/poa_exp_ability/nw_s1_aurablnda.ncs and b/_haks/poa_exp_ability/nw_s1_aurablnda.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_auracoldc.ncs b/_haks/poa_exp_ability/nw_s1_auracoldc.ncs index ec76ed2a..753a2fb4 100644 Binary files a/_haks/poa_exp_ability/nw_s1_auracoldc.ncs and b/_haks/poa_exp_ability/nw_s1_auracoldc.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_auracoldc.nss b/_haks/poa_exp_ability/nw_s1_auracoldc.nss index 49cd95e0..caf60acc 100644 --- a/_haks/poa_exp_ability/nw_s1_auracoldc.nss +++ b/_haks/poa_exp_ability/nw_s1_auracoldc.nss @@ -51,7 +51,7 @@ void main() nDamage = nDamage / 2; } //Set the damage effect - eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD); + eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD); //Apply the VFX constant and damage effect ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); diff --git a/_haks/poa_exp_ability/nw_s1_auraelecc.ncs b/_haks/poa_exp_ability/nw_s1_auraelecc.ncs index 99461587..8be5ba53 100644 Binary files a/_haks/poa_exp_ability/nw_s1_auraelecc.ncs and b/_haks/poa_exp_ability/nw_s1_auraelecc.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_auraelecc.nss b/_haks/poa_exp_ability/nw_s1_auraelecc.nss index 06994f44..3e7b550b 100644 --- a/_haks/poa_exp_ability/nw_s1_auraelecc.nss +++ b/_haks/poa_exp_ability/nw_s1_auraelecc.nss @@ -47,10 +47,10 @@ void main() { nDamage = nDamage / 2; } - eDam = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); + eDam = PRCEffectDamage(oTarget, 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)); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + SPApplyEffectToObject(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 index 8612d76f..376706c1 100644 Binary files a/_haks/poa_exp_ability/nw_s1_aurafear.ncs and b/_haks/poa_exp_ability/nw_s1_aurafear.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_aurafear.nss b/_haks/poa_exp_ability/nw_s1_aurafear.nss index 52750544..79ecc105 100644 --- a/_haks/poa_exp_ability/nw_s1_aurafear.nss +++ b/_haks/poa_exp_ability/nw_s1_aurafear.nss @@ -12,14 +12,30 @@ //:: Created By: Preston Watamaniuk //:: Created On: May 25, 2001 //::////////////////////////////////////////////// +//:: Modified By: Brian Greinke +//:: Modified On: 2004/01/30 +//:: Re: Added disable/reenable support +//::////////////////////////////////////////////// +//:: Modified By: Jaysyn +//:: Modified On: 2023/02/11 +//:: Re: Added PnP Aura behavior support +//::////////////////////////////////////////////// // Modified 2004/01/30 (Brian Greinke) // Added disable/reenable support #include "prc_alterations" +#include "utl_i_sqluuid" void main() { - //first, look to see if effect is already activated +//:: Declare major variables + object oMob = GetAreaOfEffectCreator(); + + int bPNPAuras = GetPRCSwitch(PRC_PNP_FEAR_AURAS); + + string sMobUUID = GetObjectUUID(oMob); + + //first, look to see if effect is already activated if ( GetHasSpellEffect(SPELLABILITY_AURA_FEAR, OBJECT_SELF) ) { PRCRemoveSpellEffects( SPELLABILITY_AURA_FEAR, OBJECT_SELF, OBJECT_SELF ); @@ -58,5 +74,5 @@ if(GetLocalInt(GetArea(oCaster), "JAIL")==1) //Set and apply AOE object effect eAOE = EffectAreaOfEffect(AOE_MOB_FEAR); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAOE, OBJECT_SELF, HoursToSeconds(100)); + SPApplyEffectToObject(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 index 04e5de6b..df60a993 100644 Binary files a/_haks/poa_exp_ability/nw_s1_aurafirec.ncs and b/_haks/poa_exp_ability/nw_s1_aurafirec.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_aurafirec.nss b/_haks/poa_exp_ability/nw_s1_aurafirec.nss index a6b96381..5a6dc374 100644 --- a/_haks/poa_exp_ability/nw_s1_aurafirec.nss +++ b/_haks/poa_exp_ability/nw_s1_aurafirec.nss @@ -49,9 +49,9 @@ void main() 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); + eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_FIRE); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + SPApplyEffectToObject(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 index ccd87e0a..fa7404bb 100644 Binary files a/_haks/poa_exp_ability/nw_s1_auramenca.ncs and b/_haks/poa_exp_ability/nw_s1_auramenca.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_auramenca.nss b/_haks/poa_exp_ability/nw_s1_auramenca.nss index e786aaa2..b2d77049 100644 --- a/_haks/poa_exp_ability/nw_s1_auramenca.nss +++ b/_haks/poa_exp_ability/nw_s1_auramenca.nss @@ -26,8 +26,7 @@ void main() 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(); + int nLevel = PRCGetCasterLevel(OBJECT_SELF); effect eVis = EffectVisualEffect(VFX_IMP_DOOM); effect eLink = CreateDoomEffectsLink(); @@ -39,8 +38,8 @@ void main() //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)); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + SPApplyEffectToObject(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 index cea1eeca..42bccbfb 100644 Binary files a/_haks/poa_exp_ability/nw_s1_auraprota.ncs and b/_haks/poa_exp_ability/nw_s1_auraprota.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_auraprota.nss b/_haks/poa_exp_ability/nw_s1_auraprota.nss index 548f2840..8e23120c 100644 --- a/_haks/poa_exp_ability/nw_s1_auraprota.nss +++ b/_haks/poa_exp_ability/nw_s1_auraprota.nss @@ -12,12 +12,12 @@ //:: Created By: Preston Watamaniuk //:: Created On:Jan 8, 2002, 2001 //::////////////////////////////////////////////// -#include "NW_I0_SPELLS" +#include "prc_inc_spells" //#include "wm_include" void main() { //Declare major variables - effect eProt = CreateProtectionFromAlignmentLink(ALIGNMENT_EVIL); + effect eProt = PRCCreateProtectionFromAlignmentLink(ALIGNMENT_EVIL); effect eGlobe = EffectSpellLevelAbsorption(3, 0); effect eDur = EffectVisualEffect(VFX_DUR_GLOBE_MINOR); @@ -30,6 +30,6 @@ void main() if(GetIsFriend(oTarget, GetAreaOfEffectCreator())) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget); + SPApplyEffectToObject(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 index 2ed4901a..c7761219 100644 Binary files a/_haks/poa_exp_ability/nw_s1_aurastuna.ncs and b/_haks/poa_exp_ability/nw_s1_aurastuna.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_aurastuna.nss b/_haks/poa_exp_ability/nw_s1_aurastuna.nss index 03d0aae0..f54cc88e 100644 --- a/_haks/poa_exp_ability/nw_s1_aurastuna.nss +++ b/_haks/poa_exp_ability/nw_s1_aurastuna.nss @@ -41,8 +41,8 @@ void main() 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); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + SPApplyEffectToObject(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 index 8ebd9473..95afad3c 100644 Binary files a/_haks/poa_exp_ability/nw_s1_auraunata.ncs and b/_haks/poa_exp_ability/nw_s1_auraunata.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_auraunata.nss b/_haks/poa_exp_ability/nw_s1_auraunata.nss index a5970627..4e7ea1fd 100644 --- a/_haks/poa_exp_ability/nw_s1_auraunata.nss +++ b/_haks/poa_exp_ability/nw_s1_auraunata.nss @@ -27,7 +27,7 @@ void main() int nDuration = GetHitDice(oNPC); int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); - int nRacial = GetRacialType(oTarget); + int nRacial = MyPRCGetRacialType(oTarget); int nDC = 10 + nCHAMod + (GetHitDice(oNPC)/2); if(GetIsEnemy(oTarget)) @@ -41,7 +41,7 @@ void main() //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)); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); //} } } diff --git a/_haks/poa_exp_ability/nw_s1_aurauneaa.ncs b/_haks/poa_exp_ability/nw_s1_aurauneaa.ncs index 15c0a968..e932f388 100644 Binary files a/_haks/poa_exp_ability/nw_s1_aurauneaa.ncs and b/_haks/poa_exp_ability/nw_s1_aurauneaa.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_aurauneaa.nss b/_haks/poa_exp_ability/nw_s1_aurauneaa.nss index 6f4a75bc..a6274ec4 100644 --- a/_haks/poa_exp_ability/nw_s1_aurauneaa.nss +++ b/_haks/poa_exp_ability/nw_s1_aurauneaa.nss @@ -39,7 +39,7 @@ void main() if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH)) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); + SPApplyEffectToObject(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 index ae29ea96..bb7aa1b5 100644 Binary files a/_haks/poa_exp_ability/nw_s1_barbrage.ncs and b/_haks/poa_exp_ability/nw_s1_barbrage.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_barbrage.nss b/_haks/poa_exp_ability/nw_s1_barbrage.nss index f6454d7b..9613c54f 100644 --- a/_haks/poa_exp_ability/nw_s1_barbrage.nss +++ b/_haks/poa_exp_ability/nw_s1_barbrage.nss @@ -326,7 +326,7 @@ void main() else if (nFrost>0) FloatingTextStringOnCreature("Frostrage failed, invalid weapon", oPC, FALSE); - //Apply the VFX impact and effects + //Apply the VFX impact and the actual rage effects ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, fDuration); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC); @@ -433,6 +433,12 @@ void main() // 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)); + + if(GetLevelByClass(CLASS_TYPE_FORSAKER, oPC) >= 3) //Run feat script if Forsaker lvl3 to increase AC based on CON, then decrease again after it ends + { + ExecuteScript("prc_forsaker", oPC); + DelayCommand(fDuration + 0.1, ExecuteScript("prc_forsaker", oPC)); + } } } diff --git a/_haks/poa_exp_ability/nw_s1_bltacid.ncs b/_haks/poa_exp_ability/nw_s1_bltacid.ncs index a006de71..6ac20971 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltacid.ncs and b/_haks/poa_exp_ability/nw_s1_bltacid.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltacid.nss b/_haks/poa_exp_ability/nw_s1_bltacid.nss index ef53a16a..97e3c3e6 100644 --- a/_haks/poa_exp_ability/nw_s1_bltacid.nss +++ b/_haks/poa_exp_ability/nw_s1_bltacid.nss @@ -5,13 +5,13 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 //::////////////////////////////////////////////// +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" #include "prc_inc_spells" //#include "wm_include" @@ -44,10 +44,9 @@ void main() 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); - + //nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ACID); //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); + int nTouch = PRCDoRangedTouchAttack(oTarget); if(nTouch > 0) { if(nTouch == 2) @@ -59,8 +58,8 @@ void main() if(nDamage > 0) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + SPApplyEffectToObject(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 index ee3fc53c..f7957704 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltcharm.ncs and b/_haks/poa_exp_ability/nw_s1_bltcharm.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltcharm.nss b/_haks/poa_exp_ability/nw_s1_bltcharm.nss index df11d653..a0b06ba5 100644 --- a/_haks/poa_exp_ability/nw_s1_bltcharm.nss +++ b/_haks/poa_exp_ability/nw_s1_bltcharm.nss @@ -5,16 +5,17 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// #include "prc_inc_spells" //#include "wm_include" #include "NW_I0_SPELLS" +#include "prc_inc_sp_tch" void main() { //if (WildMagicOverride()) { return; } @@ -35,13 +36,15 @@ void main() 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)); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_CHARM)); //Make a saving throw check - if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) + if (PRCDoRangedTouchAttack(oTarget)) { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + + //Apply the VFX impact and effects + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + SPApplyEffectToObject(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 index 097200df..8364a4a3 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltchrdr.ncs and b/_haks/poa_exp_ability/nw_s1_bltchrdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltchrdr.nss b/_haks/poa_exp_ability/nw_s1_bltchrdr.nss index e7345802..33a0d470 100644 --- a/_haks/poa_exp_ability/nw_s1_bltchrdr.nss +++ b/_haks/poa_exp_ability/nw_s1_bltchrdr.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Fortitude save is - needed to avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// #include "NW_I0_SPELLS" #include "prc_inc_spells" +#include "prc_inc_sp_tch" //#include "wm_include" void main() @@ -37,12 +38,12 @@ void main() //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)) + if (PRCDoRangedTouchAttack(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); + SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + SPApplyEffectToObject(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 index 6cc3bd2d..07d1f9fe 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltcold.ncs and b/_haks/poa_exp_ability/nw_s1_bltcold.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltcold.nss b/_haks/poa_exp_ability/nw_s1_bltcold.nss index 657f0fe6..ea8b4e7a 100644 --- a/_haks/poa_exp_ability/nw_s1_bltcold.nss +++ b/_haks/poa_exp_ability/nw_s1_bltcold.nss @@ -5,16 +5,17 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// #include "NW_I0_SPELLS" #include "prc_inc_spells" //#include "wm_include" +#include "prc_inc_sp_tch" void main() { @@ -41,7 +42,7 @@ void main() nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_COLD); //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); + int nTouch = PRCDoRangedTouchAttack(oTarget); if(nTouch > 0) { if(nTouch == 2) @@ -53,8 +54,8 @@ void main() if(nDamage > 0) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + SPApplyEffectToObject(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 index 213436ac..e2c7ac66 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltcondr.ncs and b/_haks/poa_exp_ability/nw_s1_bltcondr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltcondr.nss b/_haks/poa_exp_ability/nw_s1_bltcondr.nss index 9d85f042..96fa4d5f 100644 --- a/_haks/poa_exp_ability/nw_s1_bltcondr.nss +++ b/_haks/poa_exp_ability/nw_s1_bltcondr.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Fort save is - needed to avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -37,12 +38,12 @@ void main() //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)) + if (PRCDoRangedTouchAttack(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); + SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + SPApplyEffectToObject(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 index 86e52ca7..bb6cb830 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltconf.ncs and b/_haks/poa_exp_ability/nw_s1_bltconf.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltconf.nss b/_haks/poa_exp_ability/nw_s1_bltconf.nss index 5bed7dc0..3b9610b7 100644 --- a/_haks/poa_exp_ability/nw_s1_bltconf.nss +++ b/_haks/poa_exp_ability/nw_s1_bltconf.nss @@ -5,16 +5,18 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// -#include "prc_inc_spells" -//#include "wm_include" +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" +//#include "wm_include" + void main() { //if (WildMagicOverride()) { return; } @@ -37,12 +39,12 @@ void main() eLink = EffectLinkEffects(eLink, eVis); //Fire cast spell at event for the specified target - SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_CONFUSE)); + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_CONFUSE)); //Make a saving throw check - if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) + if (PRCDoRangedTouchAttack(oTarget)) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + SPApplyEffectToObject(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 index 568fd65d..4f582554 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltdaze.ncs and b/_haks/poa_exp_ability/nw_s1_bltdaze.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdaze.nss b/_haks/poa_exp_ability/nw_s1_bltdaze.nss index 68d15c70..91fefba7 100644 --- a/_haks/poa_exp_ability/nw_s1_bltdaze.nss +++ b/_haks/poa_exp_ability/nw_s1_bltdaze.nss @@ -5,14 +5,15 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// -#include "prc_inc_spells" +#include "prc_inc_spells" +#include "prc_inc_sp_tch" //#include "wm_include" #include "NW_I0_SPELLS" void main() @@ -39,9 +40,9 @@ void main() //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)) + if (PRCDoRangedTouchAttack(oTarget)) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + SPApplyEffectToObject(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 index 0f9ee5c2..f1893f4e 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltdeath.ncs and b/_haks/poa_exp_ability/nw_s1_bltdeath.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdeath.nss b/_haks/poa_exp_ability/nw_s1_bltdeath.nss index e2cbcd73..6d630d51 100644 --- a/_haks/poa_exp_ability/nw_s1_bltdeath.nss +++ b/_haks/poa_exp_ability/nw_s1_bltdeath.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" +#include "prc_inc_spells" +#include "prc_inc_sp_tch" +#include "NW_I0_SPELLS" //#include "wm_include" void main() @@ -34,14 +35,11 @@ void main() //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(PRCDoRangedTouchAttack(oTarget)) { - if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH)) - { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + SPApplyEffectToObject(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 index 26c1006f..594cc758 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltdexdr.ncs and b/_haks/poa_exp_ability/nw_s1_bltdexdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdexdr.nss b/_haks/poa_exp_ability/nw_s1_bltdexdr.nss index 4ef34d8b..08b407e8 100644 --- a/_haks/poa_exp_ability/nw_s1_bltdexdr.nss +++ b/_haks/poa_exp_ability/nw_s1_bltdexdr.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Fort save is - needed to avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// -#include "NW_I0_SPELLS" -#include "prc_inc_spells" +#include "prc_inc_spells" +#include "prc_inc_sp_tch" +#include "NW_I0_SPELLS" //#include "wm_include" void main() @@ -37,12 +38,12 @@ void main() //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)) + if (PRCDoRangedTouchAttack(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); + SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + SPApplyEffectToObject(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 index c81e0cc2..ff16a590 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltdisese.ncs and b/_haks/poa_exp_ability/nw_s1_bltdisese.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdisese.nss b/_haks/poa_exp_ability/nw_s1_bltdisese.nss index 6513a061..a56b7297 100644 --- a/_haks/poa_exp_ability/nw_s1_bltdisese.nss +++ b/_haks/poa_exp_ability/nw_s1_bltdisese.nss @@ -12,9 +12,11 @@ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -65,9 +67,9 @@ void main() //Assign effect and chosen disease effect eBolt = EffectDisease(nDisease); //Make the ranged touch attack. - if (TouchAttackRanged(oTarget)) + if (PRCDoRangedTouchAttack(oTarget)) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget); + SPApplyEffectToObject(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 index 3f629e60..3074f574 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltdomn.ncs and b/_haks/poa_exp_ability/nw_s1_bltdomn.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltdomn.nss b/_haks/poa_exp_ability/nw_s1_bltdomn.nss index 5027b454..dbdb1324 100644 --- a/_haks/poa_exp_ability/nw_s1_bltdomn.nss +++ b/_haks/poa_exp_ability/nw_s1_bltdomn.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -44,10 +45,10 @@ void main() 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)) + if (PRCDoRangedTouchAttack(oTarget)) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + SPApplyEffectToObject(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 index 8ad6012f..77a6eb50 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltfire.ncs and b/_haks/poa_exp_ability/nw_s1_bltfire.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltfire.nss b/_haks/poa_exp_ability/nw_s1_bltfire.nss index 4f7a4236..74f1a1e3 100644 --- a/_haks/poa_exp_ability/nw_s1_bltfire.nss +++ b/_haks/poa_exp_ability/nw_s1_bltfire.nss @@ -11,9 +11,11 @@ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -37,9 +39,9 @@ void main() //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); + //nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE); //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); + int nTouch = PRCDoRangedTouchAttack(oTarget); if(nTouch > 0) { if(nTouch == 2) @@ -47,12 +49,12 @@ void main() nDamage *= 2; } //Set damage effect - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + eBolt = PRCEffectDamage(oTarget, 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); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + SPApplyEffectToObject(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 index 89a4fa2a..d5c6e1e6 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltintdr.ncs and b/_haks/poa_exp_ability/nw_s1_bltintdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltintdr.nss b/_haks/poa_exp_ability/nw_s1_bltintdr.nss index f3ffbad8..3ed05f43 100644 --- a/_haks/poa_exp_ability/nw_s1_bltintdr.nss +++ b/_haks/poa_exp_ability/nw_s1_bltintdr.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -37,12 +38,12 @@ void main() //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)) + if (PRCDoRangedTouchAttack(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); + SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + SPApplyEffectToObject(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 index c54ca6c5..162923bd 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltknckd.ncs and b/_haks/poa_exp_ability/nw_s1_bltknckd.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltknckd.nss b/_haks/poa_exp_ability/nw_s1_bltknckd.nss index 68169647..937f89a5 100644 --- a/_haks/poa_exp_ability/nw_s1_bltknckd.nss +++ b/_haks/poa_exp_ability/nw_s1_bltknckd.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -41,8 +42,8 @@ void main() 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); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oTarget, RoundsToSeconds(3)); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + SPApplyEffectToObject(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 index f698181b..de4e30d2 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltlightn.ncs and b/_haks/poa_exp_ability/nw_s1_bltlightn.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltlightn.nss b/_haks/poa_exp_ability/nw_s1_bltlightn.nss index 024eafbe..0da9b451 100644 --- a/_haks/poa_exp_ability/nw_s1_bltlightn.nss +++ b/_haks/poa_exp_ability/nw_s1_bltlightn.nss @@ -4,15 +4,16 @@ //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* - Does 1d6 per level to a single target. Reflex - save for half + Does 1d6 per level to a single target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Aug 10, 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -37,9 +38,9 @@ void main() //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); + //nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ELECTRICITY); //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); + int nTouch = PRCDoRangedTouchAttack(oTarget); if(nTouch > 0) { if(nTouch == 2) @@ -47,13 +48,11 @@ void main() nDamage *= 2; } //Set damage effect - eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); + eBolt = PRCEffectDamage(oTarget, 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); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); } } } diff --git a/_haks/poa_exp_ability/nw_s1_bltlvldr.ncs b/_haks/poa_exp_ability/nw_s1_bltlvldr.ncs index 35d17c6b..b5875ae3 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltlvldr.ncs and b/_haks/poa_exp_ability/nw_s1_bltlvldr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltlvldr.nss b/_haks/poa_exp_ability/nw_s1_bltlvldr.nss index e3f14cab..754719c7 100644 --- a/_haks/poa_exp_ability/nw_s1_bltlvldr.nss +++ b/_haks/poa_exp_ability/nw_s1_bltlvldr.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -38,12 +39,12 @@ void main() 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)) + if (PRCDoRangedTouchAttack(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); + SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget); + SPApplyEffectToObject(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 index 87b8348d..7ace4ae3 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltparal.ncs and b/_haks/poa_exp_ability/nw_s1_bltparal.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltparal.nss b/_haks/poa_exp_ability/nw_s1_bltparal.nss index e4a6b59a..26bee95c 100644 --- a/_haks/poa_exp_ability/nw_s1_bltparal.nss +++ b/_haks/poa_exp_ability/nw_s1_bltparal.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -40,9 +41,9 @@ void main() //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)) + if (PRCDoRangedTouchAttack(oTarget)) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + SPApplyEffectToObject(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 index e4066f71..5c1fe003 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltpoison.ncs and b/_haks/poa_exp_ability/nw_s1_bltpoison.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltpoison.nss b/_haks/poa_exp_ability/nw_s1_bltpoison.nss index 8a34aca8..e81c5af3 100644 --- a/_haks/poa_exp_ability/nw_s1_bltpoison.nss +++ b/_haks/poa_exp_ability/nw_s1_bltpoison.nss @@ -12,8 +12,9 @@ //:: Created By: Preston Watamaniuk //:: Created On: May 22, 2001 //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -34,6 +35,7 @@ void main() SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_POISON)); //Determine the poison type based on the Racial Type and HD + // June 3/04: Bugfix for some screwy if statements. switch (nRacial) { case RACIAL_TYPE_OUTSIDER: @@ -41,11 +43,11 @@ void main() { nPoison = POISON_QUASIT_VENOM; } - else if (nHD > 9 && nHD < 13) + else if (nHD < 13) { nPoison = POISON_BEBILITH_VENOM; } - else if (nHD >= 13) + else //if (nHD >= 13) //if statement not actually needed... { nPoison = POISON_PIT_FIEND_ICHOR; } @@ -55,27 +57,27 @@ void main() { nPoison = POISON_TINY_SPIDER_VENOM; } - else if (nHD <= 3 && nHD < 6) + else if (nHD < 6) { nPoison = POISON_SMALL_SPIDER_VENOM; } - else if (nHD <= 6 && nHD < 9) + else if (nHD < 9) { nPoison = POISON_MEDIUM_SPIDER_VENOM; } - else if (nHD <= 9 && nHD < 12) + else if (nHD < 12) { nPoison = POISON_LARGE_SPIDER_VENOM; } - else if (nHD <= 12 && nHD < 15) + else if (nHD < 15) { nPoison = POISON_HUGE_SPIDER_VENOM; } - else if (nHD <= 15 && nHD < 18) + else if (nHD < 18) { nPoison = POISON_GARGANTUAN_SPIDER_VENOM; } - else if (nHD >= 18) + else //if (nHD >= 18) { nPoison = POISON_COLOSSAL_SPIDER_VENOM; } @@ -85,27 +87,27 @@ void main() { nPoison = POISON_NIGHTSHADE; } - else if (nHD <= 3 && nHD < 6) + else if (nHD < 6) { nPoison = POISON_BLADE_BANE; } - else if (nHD <= 6 && nHD < 9) + else if (nHD < 9) { nPoison = POISON_BLOODROOT; } - else if (nHD <= 9 && nHD < 12) + else if (nHD < 12) { nPoison = POISON_LARGE_SPIDER_VENOM; } - else if (nHD <= 12 && nHD < 15) + else if (nHD < 15) { nPoison = POISON_LICH_DUST; } - else if (nHD <= 15 && nHD < 18) + else if (nHD < 18) { nPoison = POISON_DARK_REAVER_POWDER; } - else if (nHD >= 18 ) + else //if (nHD >= 18 ) { nPoison = POISON_BLACK_LOTUS_EXTRACT; } @@ -113,11 +115,11 @@ void main() break; } //Make a ranged touch attack - if (TouchAttackRanged (oTarget)) + if (PRCDoRangedTouchAttack (oTarget)) { ePoison = EffectPoison(nPoison); //Apply effects - ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget); + SPApplyEffectToObject(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 index e0e9c939..89b220dc 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltshards.ncs and b/_haks/poa_exp_ability/nw_s1_bltshards.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltshards.nss b/_haks/poa_exp_ability/nw_s1_bltshards.nss index 1b96e2bc..7245bb91 100644 --- a/_haks/poa_exp_ability/nw_s1_bltshards.nss +++ b/_haks/poa_exp_ability/nw_s1_bltshards.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -37,10 +38,9 @@ void main() 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); - + //nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC); //Make a ranged touch attack - int nTouch = TouchAttackRanged(oTarget); + int nTouch = PRCDoRangedTouchAttack(oTarget); if(nTouch > 0) { if(nTouch == 2) @@ -52,7 +52,7 @@ void main() if(nDamage > 0) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + SPApplyEffectToObject(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 index 3013dbdc..21cd064d 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltslow.ncs and b/_haks/poa_exp_ability/nw_s1_bltslow.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltslow.nss b/_haks/poa_exp_ability/nw_s1_bltslow.nss index bf4813a1..d373f353 100644 --- a/_haks/poa_exp_ability/nw_s1_bltslow.nss +++ b/_haks/poa_exp_ability/nw_s1_bltslow.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex save is - needed to or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: June 18 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -38,10 +39,10 @@ void main() //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)) + if (PRCDoRangedTouchAttack(oTarget)) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + SPApplyEffectToObject(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 index 6c5f13cc..51afc94c 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltstrdr.ncs and b/_haks/poa_exp_ability/nw_s1_bltstrdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltstrdr.nss b/_haks/poa_exp_ability/nw_s1_bltstrdr.nss index dd03161d..2235be81 100644 --- a/_haks/poa_exp_ability/nw_s1_bltstrdr.nss +++ b/_haks/poa_exp_ability/nw_s1_bltstrdr.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Fort save is - needed to avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -37,12 +38,12 @@ void main() //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)) + if (PRCDoRangedTouchAttack(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); + SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget); + SPApplyEffectToObject(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 index d17a3b79..2fbc1e7d 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltstun.ncs and b/_haks/poa_exp_ability/nw_s1_bltstun.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltstun.nss b/_haks/poa_exp_ability/nw_s1_bltstun.nss index 1d770089..2d91f4a2 100644 --- a/_haks/poa_exp_ability/nw_s1_bltstun.nss +++ b/_haks/poa_exp_ability/nw_s1_bltstun.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Reflex or Will save is - needed to halve damage or avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -41,10 +42,10 @@ void main() //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)) + if (PRCDoRangedTouchAttack(oTarget)) { //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + SPApplyEffectToObject(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 index a180256f..b64b6ad7 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltweb.ncs and b/_haks/poa_exp_ability/nw_s1_bltweb.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltweb.nss b/_haks/poa_exp_ability/nw_s1_bltweb.nss index 9ed210a0..cb8b4240 100644 --- a/_haks/poa_exp_ability/nw_s1_bltweb.nss +++ b/_haks/poa_exp_ability/nw_s1_bltweb.nss @@ -10,9 +10,12 @@ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Jan 28, 2002 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" +#include "x2_inc_switches" //#include "wm_include" void main() @@ -36,9 +39,12 @@ void main() //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)) + if (PRCDoRangedTouchAttack(oTarget)) { - //Apply the VFX impact and effects - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + if( !GetHasFeat(FEAT_WOODLAND_STRIDE, oTarget) && GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) != TRUE ) + { + //Apply the VFX impact and effects + SPApplyEffectToObject(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 index 0c27cfdb..51f10975 100644 Binary files a/_haks/poa_exp_ability/nw_s1_bltwisdr.ncs and b/_haks/poa_exp_ability/nw_s1_bltwisdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_bltwisdr.nss b/_haks/poa_exp_ability/nw_s1_bltwisdr.nss index 49643c08..bab0757b 100644 --- a/_haks/poa_exp_ability/nw_s1_bltwisdr.nss +++ b/_haks/poa_exp_ability/nw_s1_bltwisdr.nss @@ -5,15 +5,16 @@ //::////////////////////////////////////////////// /* Creature must make a ranged touch attack to hit - the intended target. Fort save is - needed to avoid effect. + the intended target. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 11 , 2001 +//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws //::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "prc_inc_sp_tch" #include "NW_I0_SPELLS" -#include "prc_inc_spells" //#include "wm_include" void main() @@ -37,12 +38,12 @@ void main() //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)) + if (PRCDoRangedTouchAttack(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); + SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget); + SPApplyEffectToObject(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 index 60b5b7fb..66a8264a 100644 Binary files a/_haks/poa_exp_ability/nw_s1_coneacid.ncs and b/_haks/poa_exp_ability/nw_s1_coneacid.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_coneacid.nss b/_haks/poa_exp_ability/nw_s1_coneacid.nss index 2ab7dcfc..6b148afc 100644 --- a/_haks/poa_exp_ability/nw_s1_coneacid.nss +++ b/_haks/poa_exp_ability/nw_s1_coneacid.nss @@ -12,8 +12,8 @@ //:: Created By: Preston Watamaniuk //:: Created On: May 11, 2001 //::////////////////////////////////////////////// -#include "NW_I0_SPELLS" #include "prc_inc_spells" +#include "NW_I0_SPELLS" //#include "wm_include" void main() @@ -36,14 +36,12 @@ void main() { nLoop = 1; } - - //Calculate the damage + //Calculate the damage for (nLoop; nLoop > 0; nLoop--) { nDamage = nDamage + d6(2); } - location lTargetLocation = GetSpellTargetLocation(); - + location lTargetLocation = PRCGetSpellTargetLocation(); effect eCone; effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); @@ -60,7 +58,7 @@ void main() //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); + eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ACID); if(nDamage > 0) { //Apply the VFX impact and effects diff --git a/_haks/poa_exp_ability/nw_s1_conecold.ncs b/_haks/poa_exp_ability/nw_s1_conecold.ncs index 7d26629f..96fb6ce8 100644 Binary files a/_haks/poa_exp_ability/nw_s1_conecold.ncs and b/_haks/poa_exp_ability/nw_s1_conecold.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_conecold.nss b/_haks/poa_exp_ability/nw_s1_conecold.nss index 24cc011b..c3ed9b03 100644 --- a/_haks/poa_exp_ability/nw_s1_conecold.nss +++ b/_haks/poa_exp_ability/nw_s1_conecold.nss @@ -12,8 +12,8 @@ //:: Created By: Preston Watamaniuk //:: Created On: May 11, 2001 //::////////////////////////////////////////////// -#include "NW_I0_SPELLS" #include "prc_inc_spells" +#include "NW_I0_SPELLS" //#include "wm_include" void main() @@ -60,12 +60,13 @@ void main() //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); + eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD); + + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); } } //Get next target in spell area diff --git a/_haks/poa_exp_ability/nw_s1_conedisea.ncs b/_haks/poa_exp_ability/nw_s1_conedisea.ncs index 7ddb012d..6b73d190 100644 Binary files a/_haks/poa_exp_ability/nw_s1_conedisea.ncs and b/_haks/poa_exp_ability/nw_s1_conedisea.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_conedisea.nss b/_haks/poa_exp_ability/nw_s1_conedisea.nss index 9abedbb0..ff6d2e67 100644 --- a/_haks/poa_exp_ability/nw_s1_conedisea.nss +++ b/_haks/poa_exp_ability/nw_s1_conedisea.nss @@ -11,8 +11,8 @@ //:: Created By: Preston Watamaniuk //:: Created On: May 22, 2001 //::////////////////////////////////////////////// -#include "NW_I0_SPELLS" #include "prc_inc_spells" +#include "NW_I0_SPELLS" //#include "wm_include" void main() @@ -27,14 +27,13 @@ void main() int nRacial = MyPRCGetRacialType(oNPC); int nDisease; - location lTargetLocation = GetSpellTargetLocation(); + location lTargetLocation = PRCGetSpellTargetLocation(); 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) { @@ -86,8 +85,8 @@ void main() //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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(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 index 83ba10d9..06506fd3 100644 Binary files a/_haks/poa_exp_ability/nw_s1_coneelec.ncs and b/_haks/poa_exp_ability/nw_s1_coneelec.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_coneelec.nss b/_haks/poa_exp_ability/nw_s1_coneelec.nss index a4fa75ba..74c262ff 100644 --- a/_haks/poa_exp_ability/nw_s1_coneelec.nss +++ b/_haks/poa_exp_ability/nw_s1_coneelec.nss @@ -12,8 +12,10 @@ //:: Created By: Preston Watamaniuk //:: Created On: May 11, 2001 //::////////////////////////////////////////////// +//:: Updated Georg Z, 2003-09-02: fixed cone not visible if no damage is done #include "NW_I0_SPELLS" #include "prc_inc_spells" +#include "prc_add_spell_dc" //#include "wm_include" void main() @@ -36,14 +38,12 @@ void main() { nLoop = 1; } - - //Calculate the damage + //Calculate the damage for (nLoop; nLoop > 0; nLoop--) { nDamage = nDamage + d6(2); } - location lTargetLocation = GetSpellTargetLocation(); - + location lTargetLocation = PRCGetSpellTargetLocation(); effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_HAND); effect eCone; effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); @@ -61,13 +61,13 @@ void main() //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); + eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ELECTRICAL); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); } } //Get next target in spell area diff --git a/_haks/poa_exp_ability/nw_s1_conesonic.ncs b/_haks/poa_exp_ability/nw_s1_conesonic.ncs index f6381324..8b1a0e41 100644 Binary files a/_haks/poa_exp_ability/nw_s1_conesonic.ncs and b/_haks/poa_exp_ability/nw_s1_conesonic.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_conesonic.nss b/_haks/poa_exp_ability/nw_s1_conesonic.nss index 79c1d466..31c7686b 100644 --- a/_haks/poa_exp_ability/nw_s1_conesonic.nss +++ b/_haks/poa_exp_ability/nw_s1_conesonic.nss @@ -14,6 +14,7 @@ //::////////////////////////////////////////////// #include "prc_inc_spells" #include "NW_I0_SPELLS" +#include "prc_add_spell_dc" //#include "wm_include" void main() @@ -36,13 +37,12 @@ void main() { nLoop = 1; } - - //Calculate the damage + //Calculate the damage for (nLoop; nLoop > 0; nLoop--) { nDamage = nDamage + d6(2); } - location lTargetLocation = GetSpellTargetLocation(); + location lTargetLocation = PRCGetSpellTargetLocation(); effect eCone; effect eVis = EffectVisualEffect(VFX_IMP_SONIC); @@ -60,12 +60,12 @@ void main() //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); + eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_SONIC); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); } } //Get next target in spell area diff --git a/_haks/poa_exp_ability/nw_s1_dragacid.ncs b/_haks/poa_exp_ability/nw_s1_dragacid.ncs index a0221802..100ae50f 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragacid.ncs and b/_haks/poa_exp_ability/nw_s1_dragacid.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_dragcold.ncs b/_haks/poa_exp_ability/nw_s1_dragcold.ncs index 0a04cd9b..9fc3ef0f 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragcold.ncs and b/_haks/poa_exp_ability/nw_s1_dragcold.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_dragfear.ncs b/_haks/poa_exp_ability/nw_s1_dragfear.ncs index 29a81313..292207df 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragfear.ncs and b/_haks/poa_exp_ability/nw_s1_dragfear.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_dragfeara.ncs b/_haks/poa_exp_ability/nw_s1_dragfeara.ncs index 449bea2f..74bfb595 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragfeara.ncs and b/_haks/poa_exp_ability/nw_s1_dragfeara.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_dragfire.ncs b/_haks/poa_exp_ability/nw_s1_dragfire.ncs index 11b22798..174d2138 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragfire.ncs and b/_haks/poa_exp_ability/nw_s1_dragfire.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_draggas.ncs b/_haks/poa_exp_ability/nw_s1_draggas.ncs index 056e8ba0..a55fafe5 100644 Binary files a/_haks/poa_exp_ability/nw_s1_draggas.ncs and b/_haks/poa_exp_ability/nw_s1_draggas.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_draglight.ncs b/_haks/poa_exp_ability/nw_s1_draglight.ncs index bc9f5571..0b213227 100644 Binary files a/_haks/poa_exp_ability/nw_s1_draglight.ncs and b/_haks/poa_exp_ability/nw_s1_draglight.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_dragparal.ncs b/_haks/poa_exp_ability/nw_s1_dragparal.ncs index aafbbb23..5afc0d5d 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragparal.ncs and b/_haks/poa_exp_ability/nw_s1_dragparal.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_dragsleep.ncs b/_haks/poa_exp_ability/nw_s1_dragsleep.ncs index 8496e880..aaecf477 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragsleep.ncs and b/_haks/poa_exp_ability/nw_s1_dragsleep.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_dragslow.ncs b/_haks/poa_exp_ability/nw_s1_dragslow.ncs index d53d5541..5979e437 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragslow.ncs and b/_haks/poa_exp_ability/nw_s1_dragslow.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_dragweak.ncs b/_haks/poa_exp_ability/nw_s1_dragweak.ncs index c4b2506d..a60266c2 100644 Binary files a/_haks/poa_exp_ability/nw_s1_dragweak.ncs and b/_haks/poa_exp_ability/nw_s1_dragweak.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazechaos.ncs b/_haks/poa_exp_ability/nw_s1_gazechaos.ncs index f421c517..0077e747 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazechaos.ncs and b/_haks/poa_exp_ability/nw_s1_gazechaos.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazecharm.ncs b/_haks/poa_exp_ability/nw_s1_gazecharm.ncs index 610a51ee..7c1e0bb4 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazecharm.ncs and b/_haks/poa_exp_ability/nw_s1_gazecharm.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazeconfu.ncs b/_haks/poa_exp_ability/nw_s1_gazeconfu.ncs index 4514c9cb..59b13172 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazeconfu.ncs and b/_haks/poa_exp_ability/nw_s1_gazeconfu.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazedaze.ncs b/_haks/poa_exp_ability/nw_s1_gazedaze.ncs index 7d808b2d..df459ec8 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazedaze.ncs and b/_haks/poa_exp_ability/nw_s1_gazedaze.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazedeath.ncs b/_haks/poa_exp_ability/nw_s1_gazedeath.ncs index 4033bb45..908ba0df 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazedeath.ncs and b/_haks/poa_exp_ability/nw_s1_gazedeath.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazedomn.ncs b/_haks/poa_exp_ability/nw_s1_gazedomn.ncs index 2429a17f..885e1013 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazedomn.ncs and b/_haks/poa_exp_ability/nw_s1_gazedomn.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazedoom.ncs b/_haks/poa_exp_ability/nw_s1_gazedoom.ncs index 09426e70..62762e7c 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazedoom.ncs and b/_haks/poa_exp_ability/nw_s1_gazedoom.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazeevil.ncs b/_haks/poa_exp_ability/nw_s1_gazeevil.ncs index 02563e2e..b3755fea 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazeevil.ncs and b/_haks/poa_exp_ability/nw_s1_gazeevil.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazefear.ncs b/_haks/poa_exp_ability/nw_s1_gazefear.ncs index e22008d2..6086871e 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazefear.ncs and b/_haks/poa_exp_ability/nw_s1_gazefear.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazegood.ncs b/_haks/poa_exp_ability/nw_s1_gazegood.ncs index 0e89634c..866670ad 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazegood.ncs and b/_haks/poa_exp_ability/nw_s1_gazegood.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazelaw.ncs b/_haks/poa_exp_ability/nw_s1_gazelaw.ncs index e5a36586..06b4be89 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazelaw.ncs and b/_haks/poa_exp_ability/nw_s1_gazelaw.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_gazestun.ncs b/_haks/poa_exp_ability/nw_s1_gazestun.ncs index 04da4b55..e057fd86 100644 Binary files a/_haks/poa_exp_ability/nw_s1_gazestun.ncs and b/_haks/poa_exp_ability/nw_s1_gazestun.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_hndbreath.ncs b/_haks/poa_exp_ability/nw_s1_hndbreath.ncs index 5a451a30..d868c268 100644 Binary files a/_haks/poa_exp_ability/nw_s1_hndbreath.ncs and b/_haks/poa_exp_ability/nw_s1_hndbreath.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_howlconf.ncs b/_haks/poa_exp_ability/nw_s1_howlconf.ncs index f05f586b..ff0901aa 100644 Binary files a/_haks/poa_exp_ability/nw_s1_howlconf.ncs and b/_haks/poa_exp_ability/nw_s1_howlconf.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_howldaze.ncs b/_haks/poa_exp_ability/nw_s1_howldaze.ncs index ef0f30e1..03a4bbdc 100644 Binary files a/_haks/poa_exp_ability/nw_s1_howldaze.ncs and b/_haks/poa_exp_ability/nw_s1_howldaze.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_howldeath.ncs b/_haks/poa_exp_ability/nw_s1_howldeath.ncs index c654340d..14484362 100644 Binary files a/_haks/poa_exp_ability/nw_s1_howldeath.ncs and b/_haks/poa_exp_ability/nw_s1_howldeath.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_howlfear.ncs b/_haks/poa_exp_ability/nw_s1_howlfear.ncs index 97f12af6..12f1750a 100644 Binary files a/_haks/poa_exp_ability/nw_s1_howlfear.ncs and b/_haks/poa_exp_ability/nw_s1_howlfear.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_howlparal.ncs b/_haks/poa_exp_ability/nw_s1_howlparal.ncs index 530f020b..25ddb32a 100644 Binary files a/_haks/poa_exp_ability/nw_s1_howlparal.ncs and b/_haks/poa_exp_ability/nw_s1_howlparal.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_howlsonic.ncs b/_haks/poa_exp_ability/nw_s1_howlsonic.ncs index 876e11f0..72e9c120 100644 Binary files a/_haks/poa_exp_ability/nw_s1_howlsonic.ncs and b/_haks/poa_exp_ability/nw_s1_howlsonic.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_howlstun.ncs b/_haks/poa_exp_ability/nw_s1_howlstun.ncs index ac9952b7..a1feaf6f 100644 Binary files a/_haks/poa_exp_ability/nw_s1_howlstun.ncs and b/_haks/poa_exp_ability/nw_s1_howlstun.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_krenscare.ncs b/_haks/poa_exp_ability/nw_s1_krenscare.ncs index a5f43b19..1827a98d 100644 Binary files a/_haks/poa_exp_ability/nw_s1_krenscare.ncs and b/_haks/poa_exp_ability/nw_s1_krenscare.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_mephsalt.ncs b/_haks/poa_exp_ability/nw_s1_mephsalt.ncs index 724cd1fe..51407607 100644 Binary files a/_haks/poa_exp_ability/nw_s1_mephsalt.ncs and b/_haks/poa_exp_ability/nw_s1_mephsalt.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_mephsteam.ncs b/_haks/poa_exp_ability/nw_s1_mephsteam.ncs index f163c727..374a8908 100644 Binary files a/_haks/poa_exp_ability/nw_s1_mephsteam.ncs and b/_haks/poa_exp_ability/nw_s1_mephsteam.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulschrdr.ncs b/_haks/poa_exp_ability/nw_s1_pulschrdr.ncs index 7448a22d..f41595dd 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulschrdr.ncs and b/_haks/poa_exp_ability/nw_s1_pulschrdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulschrdr.nss b/_haks/poa_exp_ability/nw_s1_pulschrdr.nss index b55902c4..0fe15546 100644 --- a/_haks/poa_exp_ability/nw_s1_pulschrdr.nss +++ b/_haks/poa_exp_ability/nw_s1_pulschrdr.nss @@ -37,9 +37,7 @@ void main() effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); effect eHowl; effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); - + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); while(GetIsObjectValid(oTarget)) @@ -54,14 +52,14 @@ void main() //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)) + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulscold.ncs b/_haks/poa_exp_ability/nw_s1_pulscold.ncs index 6fdad180..3bbdc535 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulscold.ncs and b/_haks/poa_exp_ability/nw_s1_pulscold.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulscold.nss b/_haks/poa_exp_ability/nw_s1_pulscold.nss index c5ff7d28..5fb83d49 100644 --- a/_haks/poa_exp_ability/nw_s1_pulscold.nss +++ b/_haks/poa_exp_ability/nw_s1_pulscold.nss @@ -34,7 +34,7 @@ void main() effect eHowl; effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_COLD); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -51,12 +51,12 @@ void main() nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD); //Determine effect delay fDelay = GetDistanceBetween(oNPC, oTarget)/20; - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_COLD); + eHowl = PRCEffectDamage(oTarget, 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulscondr.ncs b/_haks/poa_exp_ability/nw_s1_pulscondr.ncs index faef4a53..2cf6d2ce 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulscondr.ncs and b/_haks/poa_exp_ability/nw_s1_pulscondr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulscondr.nss b/_haks/poa_exp_ability/nw_s1_pulscondr.nss index bfdbfcfe..cc4e726e 100644 --- a/_haks/poa_exp_ability/nw_s1_pulscondr.nss +++ b/_haks/poa_exp_ability/nw_s1_pulscondr.nss @@ -38,7 +38,7 @@ void main() effect eHowl; effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -59,8 +59,8 @@ void main() 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulsdeath.ncs b/_haks/poa_exp_ability/nw_s1_pulsdeath.ncs index c7f20c98..5da2d50c 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsdeath.ncs and b/_haks/poa_exp_ability/nw_s1_pulsdeath.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsdeath.nss b/_haks/poa_exp_ability/nw_s1_pulsdeath.nss index 7c949d1c..9f8980fa 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsdeath.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsdeath.nss @@ -36,9 +36,10 @@ void main() effect eVis = EffectVisualEffect(VFX_IMP_DEATH); effect eHowl = EffectDeath(); + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -55,7 +56,7 @@ void main() 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, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } diff --git a/_haks/poa_exp_ability/nw_s1_pulsdexdr.ncs b/_haks/poa_exp_ability/nw_s1_pulsdexdr.ncs index 764a28e6..bdea2327 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsdexdr.ncs and b/_haks/poa_exp_ability/nw_s1_pulsdexdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsdexdr.nss b/_haks/poa_exp_ability/nw_s1_pulsdexdr.nss index d29872ad..8397378c 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsdexdr.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsdexdr.nss @@ -58,8 +58,8 @@ void main() 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulsdis.ncs b/_haks/poa_exp_ability/nw_s1_pulsdis.ncs index 39c19bac..bfb209c9 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsdis.ncs and b/_haks/poa_exp_ability/nw_s1_pulsdis.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsdis.nss b/_haks/poa_exp_ability/nw_s1_pulsdis.nss index f81568cf..f0f34c83 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsdis.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsdis.nss @@ -58,7 +58,7 @@ void main() break; } - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -74,7 +74,7 @@ void main() fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; eDisease = EffectDisease(nDisease); //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget)); } } //Get next target in spell area diff --git a/_haks/poa_exp_ability/nw_s1_pulselec.ncs b/_haks/poa_exp_ability/nw_s1_pulselec.ncs index 8be0b100..c5b7fcd6 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulselec.ncs and b/_haks/poa_exp_ability/nw_s1_pulselec.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulselec.nss b/_haks/poa_exp_ability/nw_s1_pulselec.nss index 2f856145..5f2db90c 100644 --- a/_haks/poa_exp_ability/nw_s1_pulselec.nss +++ b/_haks/poa_exp_ability/nw_s1_pulselec.nss @@ -51,13 +51,13 @@ void main() nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY); //Determine effect delay fDelay = GetDistanceBetween(oNPC, oTarget)/20; - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); + eHowl = PRCEffectDamage(oTarget, 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget, 0.5)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulsfire.ncs b/_haks/poa_exp_ability/nw_s1_pulsfire.ncs index 8563577f..169181b4 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsfire.ncs and b/_haks/poa_exp_ability/nw_s1_pulsfire.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsfire.nss b/_haks/poa_exp_ability/nw_s1_pulsfire.nss index 9270aa99..36d88bbe 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsfire.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsfire.nss @@ -34,7 +34,7 @@ void main() effect eHowl; effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_FIRE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF)); @@ -52,12 +52,12 @@ void main() nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE); //Determine effect delay fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; - eHowl = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + eHowl = PRCEffectDamage(oTarget, 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulsholy.ncs b/_haks/poa_exp_ability/nw_s1_pulsholy.ncs index 8eb4b95f..6505c238 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsholy.ncs and b/_haks/poa_exp_ability/nw_s1_pulsholy.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsholy.nss b/_haks/poa_exp_ability/nw_s1_pulsholy.nss index 20ae4638..7182edb7 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsholy.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsholy.nss @@ -35,7 +35,7 @@ void main() effect eHowl; effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_HOLY); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -59,8 +59,8 @@ void main() //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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } @@ -71,14 +71,14 @@ void main() //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) ; + eHowl = PRCEffectDamage(oTarget, 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulsintdr.ncs b/_haks/poa_exp_ability/nw_s1_pulsintdr.ncs index b04960da..b071782f 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsintdr.ncs and b/_haks/poa_exp_ability/nw_s1_pulsintdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsintdr.nss b/_haks/poa_exp_ability/nw_s1_pulsintdr.nss index 8558364b..f7934ab6 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsintdr.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsintdr.nss @@ -38,7 +38,7 @@ void main() effect eHowl; effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -60,8 +60,8 @@ void main() 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulslvldr.ncs b/_haks/poa_exp_ability/nw_s1_pulslvldr.ncs index 690cfcef..eabf0df1 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulslvldr.ncs and b/_haks/poa_exp_ability/nw_s1_pulslvldr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulslvldr.nss b/_haks/poa_exp_ability/nw_s1_pulslvldr.nss index f65e073e..13c29016 100644 --- a/_haks/poa_exp_ability/nw_s1_pulslvldr.nss +++ b/_haks/poa_exp_ability/nw_s1_pulslvldr.nss @@ -12,8 +12,8 @@ //:: Created By: Preston Watamaniuk //:: Created On: May 14, 2000 //::////////////////////////////////////////////// -#include "NW_I0_SPELLS" #include "prc_inc_spells" +#include "NW_I0_SPELLS" //#include "wm_include" void main() { @@ -50,8 +50,8 @@ void main() { //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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulsneg.ncs b/_haks/poa_exp_ability/nw_s1_pulsneg.ncs index 8123c997..3cc992b9 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsneg.ncs and b/_haks/poa_exp_ability/nw_s1_pulsneg.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsneg.nss b/_haks/poa_exp_ability/nw_s1_pulsneg.nss index 9bfa749f..79c231ed 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsneg.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsneg.nss @@ -35,7 +35,7 @@ void main() effect eHowl; effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -58,8 +58,8 @@ void main() //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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } else @@ -69,14 +69,14 @@ void main() //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); + eHowl = PRCEffectDamage(oTarget, 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulspois.ncs b/_haks/poa_exp_ability/nw_s1_pulspois.ncs index a381a67c..dac2ed18 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulspois.ncs and b/_haks/poa_exp_ability/nw_s1_pulspois.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulspois.nss b/_haks/poa_exp_ability/nw_s1_pulspois.nss index 252ae3a0..8d1e1241 100644 --- a/_haks/poa_exp_ability/nw_s1_pulspois.nss +++ b/_haks/poa_exp_ability/nw_s1_pulspois.nss @@ -12,7 +12,8 @@ //:: Created By: Preston Watamaniuk //:: Created On: May 23, 2000 //::////////////////////////////////////////////// -#include "prc_inc_racial" +#include "prc_inc_racial" +#include "prc_inc_spells" //#include "wm_include" void main() @@ -40,11 +41,11 @@ void main() { nPoison = POISON_QUASIT_VENOM; } - else if (nHD > 9 && nHD < 13) + else if (nHD < 13) { nPoison = POISON_BEBILITH_VENOM; } - else if (nHD >= 13) + else //if (nHD >= 13) { nPoison = POISON_PIT_FIEND_ICHOR; } @@ -54,27 +55,27 @@ void main() { nPoison = POISON_TINY_SPIDER_VENOM; } - else if (nHD <= 3 && nHD < 6) + else if (nHD < 6) { nPoison = POISON_SMALL_SPIDER_VENOM; } - else if (nHD <= 6 && nHD < 9) + else if (nHD < 9) { nPoison = POISON_MEDIUM_SPIDER_VENOM; } - else if (nHD <= 9 && nHD < 12) + else if (nHD < 12) { nPoison = POISON_LARGE_SPIDER_VENOM; } - else if (nHD <= 12 && nHD < 15) + else if (nHD < 15) { nPoison = POISON_HUGE_SPIDER_VENOM; } - else if (nHD <= 15 && nHD < 18) + else if (nHD < 18) { nPoison = POISON_GARGANTUAN_SPIDER_VENOM; } - else if (nHD >= 18) + else// if (nHD >= 18) { nPoison = POISON_COLOSSAL_SPIDER_VENOM; } @@ -84,34 +85,34 @@ void main() { nPoison = POISON_NIGHTSHADE; } - else if (nHD <= 3 && nHD < 6) + else if (nHD < 6) { nPoison = POISON_BLADE_BANE; } - else if (nHD <= 6 && nHD < 9) + else if (nHD < 9) { nPoison = POISON_BLOODROOT; } - else if (nHD <= 9 && nHD < 12) + else if (nHD < 12) { nPoison = POISON_LARGE_SPIDER_VENOM; } - else if (nHD <= 12 && nHD < 15) + else if (nHD < 15) { nPoison = POISON_LICH_DUST; } - else if (nHD <= 15 && nHD < 18) + else if (nHD < 18) { nPoison = POISON_DARK_REAVER_POWDER; } - else if (nHD >= 18 ) + else //if (nHD >= 18 ) { nPoison = POISON_BLACK_LOTUS_EXTRACT; } break; } - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -127,7 +128,7 @@ void main() fDelay = GetDistanceBetween(oNPC, oTarget)/20; ePoison = EffectPoison(nPoison); //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget)); } } //Get next target in spell area diff --git a/_haks/poa_exp_ability/nw_s1_pulsspore.ncs b/_haks/poa_exp_ability/nw_s1_pulsspore.ncs index 4f7e5904..49755f1c 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsspore.ncs and b/_haks/poa_exp_ability/nw_s1_pulsspore.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsspore.nss b/_haks/poa_exp_ability/nw_s1_pulsspore.nss index 7e9e34d3..5b5b354a 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsspore.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsspore.nss @@ -11,6 +11,7 @@ //:: Created By: Preston Watamaniuk //:: Created On: Jan 8, 2002 //::////////////////////////////////////////////// +#include "prc_inc_spells" //#include "wm_include" void main() @@ -41,7 +42,7 @@ void main() fDelay = GetDistanceBetween(oNPC, oTarget)/20; eDisease = EffectDisease(DISEASE_SOLDIER_SHAKES); //Apply the VFX impact and effects - DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget)); } } //Get next target in spell area diff --git a/_haks/poa_exp_ability/nw_s1_pulsstrdr.ncs b/_haks/poa_exp_ability/nw_s1_pulsstrdr.ncs index 8953f549..65c95f1a 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulsstrdr.ncs and b/_haks/poa_exp_ability/nw_s1_pulsstrdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulsstrdr.nss b/_haks/poa_exp_ability/nw_s1_pulsstrdr.nss index 5f88eabc..a2b81d9a 100644 --- a/_haks/poa_exp_ability/nw_s1_pulsstrdr.nss +++ b/_haks/poa_exp_ability/nw_s1_pulsstrdr.nss @@ -38,7 +38,7 @@ void main() effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); effect eHowl; - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); @@ -59,8 +59,8 @@ void main() 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } } diff --git a/_haks/poa_exp_ability/nw_s1_pulswind.ncs b/_haks/poa_exp_ability/nw_s1_pulswind.ncs index 88e74ba9..358e8fb8 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulswind.ncs and b/_haks/poa_exp_ability/nw_s1_pulswind.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulswind.nss b/_haks/poa_exp_ability/nw_s1_pulswind.nss index 05724072..2551dcbb 100644 --- a/_haks/poa_exp_ability/nw_s1_pulswind.nss +++ b/_haks/poa_exp_ability/nw_s1_pulswind.nss @@ -4,8 +4,11 @@ //:: Copyright (c) 2001 Bioware Corp. //:://///////////////////////////////////////////// /* - All those that fail a save are knocked + All those that fail a save of DC 14 are knocked down by the elemental whirlwind. + + * made this make the knockdown last 2 rounds instead of 1 + * it will now also do d3(hitdice/2) damage */ //:://///////////////////////////////////////////// //:: Created By: Preston Watamaniuk @@ -28,21 +31,24 @@ void main() 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)); - + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + int nDamage = GetHitDice(oNPC) /2; + effect eDam; + //Get first target in spell area while(GetIsObjectValid(oTarget)) { - if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + eDam = PRCEffectDamage(oTarget, d3(nDamage), DAMAGE_TYPE_SLASHING); + + 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); + + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDown, oTarget, RoundsToSeconds(2)); + DelayCommand(0.01, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam,oTarget)); } //Get next target in spell area } diff --git a/_haks/poa_exp_ability/nw_s1_pulswisdr.ncs b/_haks/poa_exp_ability/nw_s1_pulswisdr.ncs index 7f7cd8a8..6c271e98 100644 Binary files a/_haks/poa_exp_ability/nw_s1_pulswisdr.ncs and b/_haks/poa_exp_ability/nw_s1_pulswisdr.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_pulswisdr.nss b/_haks/poa_exp_ability/nw_s1_pulswisdr.nss index b1bf68c3..a45805ef 100644 --- a/_haks/poa_exp_ability/nw_s1_pulswisdr.nss +++ b/_haks/poa_exp_ability/nw_s1_pulswisdr.nss @@ -38,7 +38,7 @@ void main() effect eHowl; effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); //Get first target in spell area oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF)); @@ -57,8 +57,8 @@ void main() 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } //Get first target in spell area diff --git a/_haks/poa_exp_ability/nw_s1_smokeclaw.ncs b/_haks/poa_exp_ability/nw_s1_smokeclaw.ncs index 93a5c8e9..76e0c90d 100644 Binary files a/_haks/poa_exp_ability/nw_s1_smokeclaw.ncs and b/_haks/poa_exp_ability/nw_s1_smokeclaw.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_stink_a.ncs b/_haks/poa_exp_ability/nw_s1_stink_a.ncs index af2a1d27..a0acf32e 100644 Binary files a/_haks/poa_exp_ability/nw_s1_stink_a.ncs and b/_haks/poa_exp_ability/nw_s1_stink_a.ncs differ diff --git a/_haks/poa_exp_ability/nw_s1_tyrantfga.ncs b/_haks/poa_exp_ability/nw_s1_tyrantfga.ncs index f9187b7f..613c1dca 100644 Binary files a/_haks/poa_exp_ability/nw_s1_tyrantfga.ncs and b/_haks/poa_exp_ability/nw_s1_tyrantfga.ncs differ diff --git a/_haks/poa_exp_ability/nw_s2_bardsong.ncs b/_haks/poa_exp_ability/nw_s2_bardsong.ncs index 45fa213b..86ada328 100644 Binary files a/_haks/poa_exp_ability/nw_s2_bardsong.ncs and b/_haks/poa_exp_ability/nw_s2_bardsong.ncs differ diff --git a/_haks/poa_exp_ability/nw_s2_elemshape.ncs b/_haks/poa_exp_ability/nw_s2_elemshape.ncs index aabeaa07..e0751daf 100644 Binary files a/_haks/poa_exp_ability/nw_s2_elemshape.ncs and b/_haks/poa_exp_ability/nw_s2_elemshape.ncs differ diff --git a/_haks/poa_exp_ability/nw_s2_layonhand.ncs b/_haks/poa_exp_ability/nw_s2_layonhand.ncs index f01a12cf..9a164de0 100644 Binary files a/_haks/poa_exp_ability/nw_s2_layonhand.ncs and b/_haks/poa_exp_ability/nw_s2_layonhand.ncs differ diff --git a/_haks/poa_exp_ability/nw_s2_wildshape.ncs b/_haks/poa_exp_ability/nw_s2_wildshape.ncs index 9eabcf52..78e54546 100644 Binary files a/_haks/poa_exp_ability/nw_s2_wildshape.ncs and b/_haks/poa_exp_ability/nw_s2_wildshape.ncs differ diff --git a/_haks/poa_exp_ability/nw_s2_wildshape.nss b/_haks/poa_exp_ability/nw_s2_wildshape.nss index d0fa22ac..19f3e956 100644 --- a/_haks/poa_exp_ability/nw_s2_wildshape.nss +++ b/_haks/poa_exp_ability/nw_s2_wildshape.nss @@ -56,8 +56,12 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) effect ePoly; int nPoly; int nMetaMagic = PRCGetMetaMagicFeat(); - int nDuration = GetLevelByClass(CLASS_TYPE_DRUID, oPC) - + GetLevelByClass(CLASS_TYPE_ARCANE_HIEROPHANT, oPC); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID, oPC) + + GetLevelByClass(CLASS_TYPE_LION_OF_TALISID, oPC) + + GetLevelByClass(CLASS_TYPE_ARCANE_HIEROPHANT, oPC); + + int bShiftingDruid = GetLocalInt(GetModule(),"PRC_DRUID_USES_SHIFTING"); + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) { // check to see if abort due to being mounted if (PRCHorseGetIsMounted(oTarget)) @@ -66,15 +70,17 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) return; } // abort } // check to see if abort due to being mounted - - //Enter Metamagic conditions - if (nMetaMagic == METAMAGIC_EXTEND) + + //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); + + StoreCurrentAppearanceAsTrueAppearance(oPC, TRUE); int nShape = GetPersistantLocalInt(oPC, PRC_PNP_SHIFTING + IntToString(nSpell)); if(nShape > 0) @@ -82,14 +88,33 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) wild_shape_shift(oPC, nShape); return; } + //Determine Polymorph subradial type + string sDruidShape; + if(nSpell == 401) { - nPoly = POLYMORPH_TYPE_BROWN_BEAR; - if (nDuration >= 12) - { - nPoly = POLYMORPH_TYPE_DIRE_BROWN_BEAR; - } + if (bShiftingDruid) + { + if (nDuration < 12) + {//:: Brown Bear + //ShiftIntoResRef(oPC, SHIFTER_TYPE_DRUID, "nw_bearbrwn", FALSE); + sDruidShape = "nw_bearbrwn"; + } + else + {//:: Dire Bear + //ShiftIntoResRef(oPC, SHIFTER_TYPE_DRUID, "nw_beardire", FALSE); + sDruidShape = "nw_beardire"; + } + } + else + { + nPoly = POLYMORPH_TYPE_BROWN_BEAR; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_BROWN_BEAR; + } + } } else if (nSpell == 402) { @@ -362,15 +387,6 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) } } - - - - - - - - -//============================================================================================ /* object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); @@ -387,7 +403,7 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) { if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD) + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) { oShield = OBJECT_INVALID; } @@ -401,7 +417,15 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) //Apply the VFX impact and effects ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration)); + if(bShiftingDruid) + { + ShiftIntoResRef(oPC, SHIFTER_TYPE_DRUID, sDruidShape, FALSE); + DelayCommand(HoursToSeconds(nDuration), SetShiftTrueForm(oPC)); + } + else + { + 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); @@ -426,6 +450,6 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); } - DelayCommand(1.5,ActionCastSpellOnSelf(SPELL_SHAPE_INCREASE_DAMAGE)); + 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 index f90deb5d..e6fc2ea1 100644 Binary files a/_haks/poa_exp_ability/nw_s3_balordeth.ncs and b/_haks/poa_exp_ability/nw_s3_balordeth.ncs differ diff --git a/_haks/poa_exp_ability/prc_hexbl_curse.ncs b/_haks/poa_exp_ability/prc_hexbl_curse.ncs index 5ae2c7c5..e08638bc 100644 Binary files a/_haks/poa_exp_ability/prc_hexbl_curse.ncs and b/_haks/poa_exp_ability/prc_hexbl_curse.ncs differ diff --git a/_haks/poa_exp_ability/prc_kotmc_combat.ncs b/_haks/poa_exp_ability/prc_kotmc_combat.ncs index aecca0df..bb44f5f8 100644 Binary files a/_haks/poa_exp_ability/prc_kotmc_combat.ncs and b/_haks/poa_exp_ability/prc_kotmc_combat.ncs differ diff --git a/_haks/poa_exp_ability/x2_s1_dragneg.ncs b/_haks/poa_exp_ability/x2_s1_dragneg.ncs index f90bc71c..94f3eb51 100644 Binary files a/_haks/poa_exp_ability/x2_s1_dragneg.ncs and b/_haks/poa_exp_ability/x2_s1_dragneg.ncs differ diff --git a/_haks/poa_exp_ability/x2_s2_cursesong.ncs b/_haks/poa_exp_ability/x2_s2_cursesong.ncs index 12b4ea55..c296a375 100644 Binary files a/_haks/poa_exp_ability/x2_s2_cursesong.ncs and b/_haks/poa_exp_ability/x2_s2_cursesong.ncs differ diff --git a/_haks/poa_exp_ability/x2_s2_discbreath.ncs b/_haks/poa_exp_ability/x2_s2_discbreath.ncs index ebf91241..64c3be2f 100644 Binary files a/_haks/poa_exp_ability/x2_s2_discbreath.ncs and b/_haks/poa_exp_ability/x2_s2_discbreath.ncs differ diff --git a/_haks/poa_exp_ability/x2_s2_discbreath.nss b/_haks/poa_exp_ability/x2_s2_discbreath.nss index eee28a3b..74c5f06d 100644 --- a/_haks/poa_exp_ability/x2_s2_discbreath.nss +++ b/_haks/poa_exp_ability/x2_s2_discbreath.nss @@ -215,11 +215,11 @@ if (nLevel >= 60) nDice += 2; //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; + case 0: DBREED = DAMAGE_TYPE_COLD; break; + case 1: DBREED = DAMAGE_TYPE_ACID; break; + case 2: DBREED = DAMAGE_TYPE_FIRE; break; + case 3: DBREED = DAMAGE_TYPE_SONIC; break; + case 4: DBREED = DAMAGE_TYPE_ELECTRICAL; break; } } diff --git a/_haks/poa_exp_ability/x2_s2_epicward.ncs b/_haks/poa_exp_ability/x2_s2_epicward.ncs index 8e958fd1..887fcb61 100644 Binary files a/_haks/poa_exp_ability/x2_s2_epicward.ncs and b/_haks/poa_exp_ability/x2_s2_epicward.ncs differ diff --git a/_haks/poa_exp_ability/x2_s2_epmagearm.ncs b/_haks/poa_exp_ability/x2_s2_epmagearm.ncs index 3b99587f..59120945 100644 Binary files a/_haks/poa_exp_ability/x2_s2_epmagearm.ncs and b/_haks/poa_exp_ability/x2_s2_epmagearm.ncs differ 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 index 84200cd9..fd35f1bf 100644 Binary files a/_haks/poa_exp_spells/nw_s0_aid.ncs and b/_haks/poa_exp_spells/nw_s0_aid.ncs differ 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 b2204c35..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 index b069c35b..6daf3e61 100644 Binary files a/_haks/poa_exp_spells/nw_s0_barkskin.ncs and b/_haks/poa_exp_spells/nw_s0_barkskin.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_bladebara.ncs b/_haks/poa_exp_spells/nw_s0_bladebara.ncs index a539b1a2..7220b0b7 100644 Binary files a/_haks/poa_exp_spells/nw_s0_bladebara.ncs and b/_haks/poa_exp_spells/nw_s0_bladebara.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_bladebara.nss b/_haks/poa_exp_spells/nw_s0_bladebara.nss index 0e9e10f0..55a2f47a 100644 --- a/_haks/poa_exp_spells/nw_s0_bladebara.nss +++ b/_haks/poa_exp_spells/nw_s0_bladebara.nss @@ -58,7 +58,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(aoeCreator, nLevel); //Make SR Check if (!PRCDoResistSpell(aoeCreator, oTarget,nPenetr) ) { diff --git a/_haks/poa_exp_spells/nw_s0_bladebarc.ncs b/_haks/poa_exp_spells/nw_s0_bladebarc.ncs index 5687a993..8476dce8 100644 Binary files a/_haks/poa_exp_spells/nw_s0_bladebarc.ncs and b/_haks/poa_exp_spells/nw_s0_bladebarc.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_bladebarc.nss b/_haks/poa_exp_spells/nw_s0_bladebarc.nss index da49e69f..0d7d36d4 100644 --- a/_haks/poa_exp_spells/nw_s0_bladebarc.nss +++ b/_haks/poa_exp_spells/nw_s0_bladebarc.nss @@ -81,7 +81,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(aoeCreator, nLevel); // 1.69 change //Adjust damage according to Reflex Save, Evasion or Improved Evasion nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget,aoeCreator),SAVING_THROW_TYPE_SPELL); diff --git a/_haks/poa_exp_spells/nw_s0_burnhand.ncs b/_haks/poa_exp_spells/nw_s0_burnhand.ncs index 586fa5ae..6dd7c68f 100644 Binary files a/_haks/poa_exp_spells/nw_s0_burnhand.ncs and b/_haks/poa_exp_spells/nw_s0_burnhand.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_burnhand.nss b/_haks/poa_exp_spells/nw_s0_burnhand.nss index a4532f9d..95fd1476 100644 --- a/_haks/poa_exp_spells/nw_s0_burnhand.nss +++ b/_haks/poa_exp_spells/nw_s0_burnhand.nss @@ -78,6 +78,7 @@ void main() if(nMetaMagic & METAMAGIC_EMPOWER) nDamage += nDamage / 2; //Damage/Healing is +50% + nDamage += SpellDamagePerDice(oCaster, nDice); //Run the damage through the various reflex save and evasion feats nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, oCaster), nSaveType); if(nDamage > 0) diff --git a/_haks/poa_exp_spells/nw_s0_calllghtn.ncs b/_haks/poa_exp_spells/nw_s0_calllghtn.ncs index e8c084ce..c67b3bb2 100644 Binary files a/_haks/poa_exp_spells/nw_s0_calllghtn.ncs and b/_haks/poa_exp_spells/nw_s0_calllghtn.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_calllghtn.nss b/_haks/poa_exp_spells/nw_s0_calllghtn.nss index cfaf2b10..6d101545 100644 --- a/_haks/poa_exp_spells/nw_s0_calllghtn.nss +++ b/_haks/poa_exp_spells/nw_s0_calllghtn.nss @@ -91,6 +91,7 @@ void main() if(nMetaMagic & METAMAGIC_EMPOWER) nDamage += nDamage / 2; + nDamage += SpellDamagePerDice(oCaster, nDice); //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, oCaster), nSaveType); if(nDamage > 0) diff --git a/_haks/poa_exp_spells/nw_s0_chlightn.ncs b/_haks/poa_exp_spells/nw_s0_chlightn.ncs index 87bc9492..d3309f1f 100644 Binary files a/_haks/poa_exp_spells/nw_s0_chlightn.ncs and b/_haks/poa_exp_spells/nw_s0_chlightn.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_chlightn.nss b/_haks/poa_exp_spells/nw_s0_chlightn.nss index b98fa9d4..99fff9e9 100644 --- a/_haks/poa_exp_spells/nw_s0_chlightn.nss +++ b/_haks/poa_exp_spells/nw_s0_chlightn.nss @@ -86,7 +86,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); //Damage/is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel); CasterLvl +=SPGetPenetr(); @@ -157,6 +157,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); //Damage/is +50% } + nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel); //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 diff --git a/_haks/poa_exp_spells/nw_s0_circdeath.ncs b/_haks/poa_exp_spells/nw_s0_circdeath.ncs index 093ac74f..2602de85 100644 Binary files a/_haks/poa_exp_spells/nw_s0_circdeath.ncs and b/_haks/poa_exp_spells/nw_s0_circdeath.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_cloudkilla.ncs b/_haks/poa_exp_spells/nw_s0_cloudkilla.ncs index 80dd724d..1299f37c 100644 Binary files a/_haks/poa_exp_spells/nw_s0_cloudkilla.ncs and b/_haks/poa_exp_spells/nw_s0_cloudkilla.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_cloudkilla.nss b/_haks/poa_exp_spells/nw_s0_cloudkilla.nss index fe0ca39f..64afc6c7 100644 --- a/_haks/poa_exp_spells/nw_s0_cloudkilla.nss +++ b/_haks/poa_exp_spells/nw_s0_cloudkilla.nss @@ -18,7 +18,7 @@ //:: modified by mr_bumpkin Dec 4, 2003 //:: modified by Ornedan Dec 22, 2004 to PnP rules #include "prc_inc_spells" - +#include "prcsp_archmaginc" #include "prc_add_spell_dc" @@ -59,7 +59,12 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoeCreator)) { - //Fire cast spell at event for the specified target + // Check for Mastery of Shaping protection + if(CheckMasteryOfShapes(aoeCreator, oTarget)) + { + return; // Target is protected, exit + } + //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CLOUDKILL)); //Concealement by fog happens no matter what diff --git a/_haks/poa_exp_spells/nw_s0_cloudkillc.ncs b/_haks/poa_exp_spells/nw_s0_cloudkillc.ncs index a22317ad..689b9583 100644 Binary files a/_haks/poa_exp_spells/nw_s0_cloudkillc.ncs and b/_haks/poa_exp_spells/nw_s0_cloudkillc.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_cloudkillc.nss b/_haks/poa_exp_spells/nw_s0_cloudkillc.nss index 9ca56a68..6ef0d2a9 100644 --- a/_haks/poa_exp_spells/nw_s0_cloudkillc.nss +++ b/_haks/poa_exp_spells/nw_s0_cloudkillc.nss @@ -19,6 +19,7 @@ //:: modified by Ornedan Dec 22, 2004 to PnP rules #include "prc_inc_spells" #include "prc_add_spell_dc" +#include "prcsp_archmaginc" @@ -71,7 +72,14 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); fDelay = PRCGetRandomDelay(); if(spellsIsTarget(oTarget,SPELL_TARGET_STANDARDHOSTILE , aoeCreator) ) { - //Fire cast spell at event for the specified target + if(CheckMasteryOfShapes(aoeCreator, oTarget)) + { + // Target is protected by Mastery of Shaping, skip damage + oTarget = GetNextInPersistentObject(); + continue; + } + + //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CLOUDKILL)); nHD = GetHitDice(oTarget); diff --git a/_haks/poa_exp_spells/nw_s0_colspray.ncs b/_haks/poa_exp_spells/nw_s0_colspray.ncs index debaffc1..f2fa4021 100644 Binary files a/_haks/poa_exp_spells/nw_s0_colspray.ncs and b/_haks/poa_exp_spells/nw_s0_colspray.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_conecold.ncs b/_haks/poa_exp_spells/nw_s0_conecold.ncs index 5568a455..f2bcc645 100644 Binary files a/_haks/poa_exp_spells/nw_s0_conecold.ncs and b/_haks/poa_exp_spells/nw_s0_conecold.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_conecold.nss b/_haks/poa_exp_spells/nw_s0_conecold.nss index 4cb3fa39..e63a384d 100644 --- a/_haks/poa_exp_spells/nw_s0_conecold.nss +++ b/_haks/poa_exp_spells/nw_s0_conecold.nss @@ -97,7 +97,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel); //Adjust damage according to Reflex Save, Evasion or Improved Evasion nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD); diff --git a/_haks/poa_exp_spells/nw_s0_daze.ncs b/_haks/poa_exp_spells/nw_s0_daze.ncs index b5a9c12e..24a187a9 100644 Binary files a/_haks/poa_exp_spells/nw_s0_daze.ncs and b/_haks/poa_exp_spells/nw_s0_daze.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_delfirea.ncs b/_haks/poa_exp_spells/nw_s0_delfirea.ncs index 0bab5a58..d8087145 100644 Binary files a/_haks/poa_exp_spells/nw_s0_delfirea.ncs and b/_haks/poa_exp_spells/nw_s0_delfirea.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_delfirea.nss b/_haks/poa_exp_spells/nw_s0_delfirea.nss index a9b2d3b6..2c9daa2f 100644 --- a/_haks/poa_exp_spells/nw_s0_delfirea.nss +++ b/_haks/poa_exp_spells/nw_s0_delfirea.nss @@ -69,7 +69,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); if(nMetaMagic & METAMAGIC_EMPOWER) nDamage += nDamage/2;//Damage/Healing is +50% - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel); //Change damage according to Reflex, Evasion and Improved Evasion int nDC = PRCGetSaveDC(oTarget, oCaster, -1); nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, nSaveType, GetAreaOfEffectCreator()); diff --git a/_haks/poa_exp_spells/nw_s0_destruc.ncs b/_haks/poa_exp_spells/nw_s0_destruc.ncs index 9a972cfb..eb3ee331 100644 Binary files a/_haks/poa_exp_spells/nw_s0_destruc.ncs and b/_haks/poa_exp_spells/nw_s0_destruc.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_destruc.nss b/_haks/poa_exp_spells/nw_s0_destruc.nss index 4afafc8a..05c16752 100644 --- a/_haks/poa_exp_spells/nw_s0_destruc.nss +++ b/_haks/poa_exp_spells/nw_s0_destruc.nss @@ -86,7 +86,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY); { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); + nDamage += SpellDamagePerDice(OBJECT_SELF, 10); //Set damage effect eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); diff --git a/_haks/poa_exp_spells/nw_s0_dismagic.ncs b/_haks/poa_exp_spells/nw_s0_dismagic.ncs index 50c1e5dd..57a801fa 100644 Binary files a/_haks/poa_exp_spells/nw_s0_dismagic.ncs and b/_haks/poa_exp_spells/nw_s0_dismagic.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_enedrain.ncs b/_haks/poa_exp_spells/nw_s0_enedrain.ncs index e2e21ab5..8c9aba48 100644 Binary files a/_haks/poa_exp_spells/nw_s0_enedrain.ncs and b/_haks/poa_exp_spells/nw_s0_enedrain.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_enervat.ncs b/_haks/poa_exp_spells/nw_s0_enervat.ncs index ab37b556..36ad88d2 100644 Binary files a/_haks/poa_exp_spells/nw_s0_enervat.ncs and b/_haks/poa_exp_spells/nw_s0_enervat.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_fireball.ncs b/_haks/poa_exp_spells/nw_s0_fireball.ncs index 44e88be7..4c889abf 100644 Binary files a/_haks/poa_exp_spells/nw_s0_fireball.ncs and b/_haks/poa_exp_spells/nw_s0_fireball.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_fireball.nss b/_haks/poa_exp_spells/nw_s0_fireball.nss index 9be118f0..0c2e2986 100644 --- a/_haks/poa_exp_spells/nw_s0_fireball.nss +++ b/_haks/poa_exp_spells/nw_s0_fireball.nss @@ -71,7 +71,7 @@ void main() if ((nMetaMagic & METAMAGIC_EMPOWER)) nDamage += nDamage / 2; - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nDice); //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) diff --git a/_haks/poa_exp_spells/nw_s0_firestrm.ncs b/_haks/poa_exp_spells/nw_s0_firestrm.ncs index 69993e2b..8a4d258b 100644 Binary files a/_haks/poa_exp_spells/nw_s0_firestrm.ncs and b/_haks/poa_exp_spells/nw_s0_firestrm.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_firestrm.nss b/_haks/poa_exp_spells/nw_s0_firestrm.nss index 89a42f30..92b379a4 100644 --- a/_haks/poa_exp_spells/nw_s0_firestrm.nss +++ b/_haks/poa_exp_spells/nw_s0_firestrm.nss @@ -74,7 +74,7 @@ void main() 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); + nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel); nDamage2 = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, (nDC), SAVING_THROW_TYPE_DIVINE); nDamage = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, (nDC), SAVING_THROW_TYPE_FIRE); if(nDamage) diff --git a/_haks/poa_exp_spells/nw_s0_flmstrike.ncs b/_haks/poa_exp_spells/nw_s0_flmstrike.ncs index 70d57088..e342a9e8 100644 Binary files a/_haks/poa_exp_spells/nw_s0_flmstrike.ncs and b/_haks/poa_exp_spells/nw_s0_flmstrike.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_flmstrike.nss b/_haks/poa_exp_spells/nw_s0_flmstrike.nss index 2669c89c..ae3b0af1 100644 --- a/_haks/poa_exp_spells/nw_s0_flmstrike.nss +++ b/_haks/poa_exp_spells/nw_s0_flmstrike.nss @@ -64,7 +64,7 @@ void main() nDamage = 6 * nDice; if(nMetaMagic & METAMAGIC_EMPOWER) nDamage = nDamage + (nDamage/2); - + nDamage += SpellDamagePerDice(oCaster, nDice); //Adjust the damage based on Reflex Save, Evasion and Improved Evasion int nDC = PRCGetSaveDC(oTarget, oCaster); nDamage2 = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, nDC, nSaveType); diff --git a/_haks/poa_exp_spells/nw_s0_grdispel.ncs b/_haks/poa_exp_spells/nw_s0_grdispel.ncs index 055d6083..e92bde95 100644 Binary files a/_haks/poa_exp_spells/nw_s0_grdispel.ncs and b/_haks/poa_exp_spells/nw_s0_grdispel.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_hammgods.ncs b/_haks/poa_exp_spells/nw_s0_hammgods.ncs index 33b521a7..db1ce256 100644 Binary files a/_haks/poa_exp_spells/nw_s0_hammgods.ncs and b/_haks/poa_exp_spells/nw_s0_hammgods.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_hammgods.nss b/_haks/poa_exp_spells/nw_s0_hammgods.nss index 0c045da6..3e48795a 100644 --- a/_haks/poa_exp_spells/nw_s0_hammgods.nss +++ b/_haks/poa_exp_spells/nw_s0_hammgods.nss @@ -95,7 +95,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = FloatToInt( IntToFloat(nDamage) * 1.5 ); } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nDamageDice); int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); //Make a will save for half damage and negation of daze effect diff --git a/_haks/poa_exp_spells/nw_s0_healcirc.ncs b/_haks/poa_exp_spells/nw_s0_healcirc.ncs index 35d64067..346bb065 100644 Binary files a/_haks/poa_exp_spells/nw_s0_healcirc.ncs and b/_haks/poa_exp_spells/nw_s0_healcirc.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_healcirc.nss b/_haks/poa_exp_spells/nw_s0_healcirc.nss index 2f3120ee..6677f4f8 100644 --- a/_haks/poa_exp_spells/nw_s0_healcirc.nss +++ b/_haks/poa_exp_spells/nw_s0_healcirc.nss @@ -104,6 +104,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); { nModify += (nModify/2); //Damage/Healing is +50% } + nModify += SpellDamagePerDice(OBJECT_SELF, 1); if (GetLevelByClass(CLASS_TYPE_HEALER, OBJECT_SELF)) nModify += GetAbilityModifier(ABILITY_CHARISMA, OBJECT_SELF); //Make Fort save diff --git a/_haks/poa_exp_spells/nw_s0_healharm.ncs b/_haks/poa_exp_spells/nw_s0_healharm.ncs index ee34c0da..7b11491f 100644 Binary files a/_haks/poa_exp_spells/nw_s0_healharm.ncs and b/_haks/poa_exp_spells/nw_s0_healharm.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_healharm.nss b/_haks/poa_exp_spells/nw_s0_healharm.nss index 871e2e38..e2e3c048 100644 --- a/_haks/poa_exp_spells/nw_s0_healharm.nss +++ b/_haks/poa_exp_spells/nw_s0_healharm.nss @@ -125,6 +125,8 @@ int DoSpell(object oCaster, object oTarget, int nSpellID) nHeal = d12(nDice); if((nMetaMagic & METAMAGIC_MAXIMIZE) || iBlastFaith) nHeal = 12 * nDice; + + nHeal += SpellDamagePerDice(oCaster, nDice); } else { diff --git a/_haks/poa_exp_spells/nw_s0_horrwilt.ncs b/_haks/poa_exp_spells/nw_s0_horrwilt.ncs index 7ee804fa..2d899cdf 100644 Binary files a/_haks/poa_exp_spells/nw_s0_horrwilt.ncs and b/_haks/poa_exp_spells/nw_s0_horrwilt.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_horrwilt.nss b/_haks/poa_exp_spells/nw_s0_horrwilt.nss index f178533f..78c79537 100644 --- a/_haks/poa_exp_spells/nw_s0_horrwilt.nss +++ b/_haks/poa_exp_spells/nw_s0_horrwilt.nss @@ -93,6 +93,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY); { nDamage = nDamage + nDamage / 2; } + nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLvl); if(/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (nDC), SAVING_THROW_TYPE_NONE, OBJECT_SELF, fDelay)) { if (GetHasMettle(oTarget, SAVING_THROW_FORT)) diff --git a/_haks/poa_exp_spells/nw_s0_imprinvis.ncs b/_haks/poa_exp_spells/nw_s0_imprinvis.ncs index 9d91eb05..cb74efd5 100644 Binary files a/_haks/poa_exp_spells/nw_s0_imprinvis.ncs and b/_haks/poa_exp_spells/nw_s0_imprinvis.ncs 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 index 7605fb24..e4c49086 100644 Binary files a/_haks/poa_exp_spells/nw_s0_incclouda.ncs and b/_haks/poa_exp_spells/nw_s0_incclouda.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_incclouda.nss b/_haks/poa_exp_spells/nw_s0_incclouda.nss index 83e30973..127a4257 100644 --- a/_haks/poa_exp_spells/nw_s0_incclouda.nss +++ b/_haks/poa_exp_spells/nw_s0_incclouda.nss @@ -61,7 +61,7 @@ int CasterLvl = PRCGetCasterLevel(); { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 4); //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. diff --git a/_haks/poa_exp_spells/nw_s0_inccloudc.ncs b/_haks/poa_exp_spells/nw_s0_inccloudc.ncs index d4cb6113..921f7786 100644 Binary files a/_haks/poa_exp_spells/nw_s0_inccloudc.ncs and b/_haks/poa_exp_spells/nw_s0_inccloudc.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_inccloudc.nss b/_haks/poa_exp_spells/nw_s0_inccloudc.nss index 73e8fd82..4ea8900f 100644 --- a/_haks/poa_exp_spells/nw_s0_inccloudc.nss +++ b/_haks/poa_exp_spells/nw_s0_inccloudc.nss @@ -54,7 +54,8 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); int EleDmg = GetLocalInt(OBJECT_SELF, "IC_Damage"); - oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + //oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); //Declare the spell shape, size and the location. while(GetIsObjectValid(oTarget)) { @@ -76,7 +77,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(aoeCreator, 4); int nDC = PRCGetSaveDC(oTarget,aoeCreator); //Adjust damage for Reflex Save, Evasion and Improved Evasion nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE, aoeCreator); @@ -91,7 +92,8 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); } } //Select the next target within the spell shape. - oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + //oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); } diff --git a/_haks/poa_exp_spells/nw_s0_lghtnbolt.ncs b/_haks/poa_exp_spells/nw_s0_lghtnbolt.ncs index b08cb07b..4e95aeb2 100644 Binary files a/_haks/poa_exp_spells/nw_s0_lghtnbolt.ncs and b/_haks/poa_exp_spells/nw_s0_lghtnbolt.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_lghtnbolt.nss b/_haks/poa_exp_spells/nw_s0_lghtnbolt.nss index 9246dd2b..34020716 100644 --- a/_haks/poa_exp_spells/nw_s0_lghtnbolt.nss +++ b/_haks/poa_exp_spells/nw_s0_lghtnbolt.nss @@ -97,7 +97,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel); //Adjust damage based on Reflex Save, Evasion and Improved Evasion nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ELECTRICITY); //Set damage effect diff --git a/_haks/poa_exp_spells/nw_s0_magmiss.ncs b/_haks/poa_exp_spells/nw_s0_magmiss.ncs index 0d7b429e..65234715 100644 Binary files a/_haks/poa_exp_spells/nw_s0_magmiss.ncs and b/_haks/poa_exp_spells/nw_s0_magmiss.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_metswarm.ncs b/_haks/poa_exp_spells/nw_s0_metswarm.ncs index 6d106a65..b8e3c50a 100644 Binary files a/_haks/poa_exp_spells/nw_s0_metswarm.ncs and b/_haks/poa_exp_spells/nw_s0_metswarm.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_metswarm.nss b/_haks/poa_exp_spells/nw_s0_metswarm.nss index 47bde87c..b560f49a 100644 --- a/_haks/poa_exp_spells/nw_s0_metswarm.nss +++ b/_haks/poa_exp_spells/nw_s0_metswarm.nss @@ -85,7 +85,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, 20); nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (nDC),SAVING_THROW_TYPE_FIRE); //Set the damage effect eFire = PRCEffectDamage(oTarget, nDamage, EleDmg); diff --git a/_haks/poa_exp_spells/nw_s0_phankill.ncs b/_haks/poa_exp_spells/nw_s0_phankill.ncs index 3b7ce4cb..7aa9d402 100644 Binary files a/_haks/poa_exp_spells/nw_s0_phankill.ncs and b/_haks/poa_exp_spells/nw_s0_phankill.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_phankill.nss b/_haks/poa_exp_spells/nw_s0_phankill.nss index 0abbafeb..fd22dca3 100644 --- a/_haks/poa_exp_spells/nw_s0_phankill.nss +++ b/_haks/poa_exp_spells/nw_s0_phankill.nss @@ -84,7 +84,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ILLUSION); { nDamage = FloatToInt( IntToFloat(nDamage) * 1.5 ); } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); + nDamage += SpellDamagePerDice(OBJECT_SELF, 3); //Set the damage property eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL); //Apply the damage effect and VFX impact diff --git a/_haks/poa_exp_spells/nw_s0_pwstun.ncs b/_haks/poa_exp_spells/nw_s0_pwstun.ncs index 1902d7f7..cf893fdb 100644 Binary files a/_haks/poa_exp_spells/nw_s0_pwstun.ncs and b/_haks/poa_exp_spells/nw_s0_pwstun.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_rayfrost.ncs b/_haks/poa_exp_spells/nw_s0_rayfrost.ncs index c4d18fa1..56be8096 100644 Binary files a/_haks/poa_exp_spells/nw_s0_rayfrost.ncs and b/_haks/poa_exp_spells/nw_s0_rayfrost.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_rayfrost.nss b/_haks/poa_exp_spells/nw_s0_rayfrost.nss index 5dd1a2a6..7aaf4678 100644 --- a/_haks/poa_exp_spells/nw_s0_rayfrost.nss +++ b/_haks/poa_exp_spells/nw_s0_rayfrost.nss @@ -54,13 +54,12 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel) if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) { int nDamage = PRCMaximizeOrEmpower(nPenetr, 1, nMetaMagic); //alterei o 3 para nPenetr - + nDamage += SpellDamagePerDice(oCaster, 1); //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); diff --git a/_haks/poa_exp_spells/nw_s0_regen.ncs b/_haks/poa_exp_spells/nw_s0_regen.ncs index 5a714a4d..c7219710 100644 Binary files a/_haks/poa_exp_spells/nw_s0_regen.ncs and b/_haks/poa_exp_spells/nw_s0_regen.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_sanctuary.ncs b/_haks/poa_exp_spells/nw_s0_sanctuary.ncs index 042fed15..e743e42f 100644 Binary files a/_haks/poa_exp_spells/nw_s0_sanctuary.ncs and b/_haks/poa_exp_spells/nw_s0_sanctuary.ncs 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 index 75cbea1e..f17b5cae 100644 Binary files a/_haks/poa_exp_spells/nw_s0_searlght.ncs and b/_haks/poa_exp_spells/nw_s0_searlght.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_searlght.nss b/_haks/poa_exp_spells/nw_s0_searlght.nss index 13fc472d..b7ed3a77 100644 --- a/_haks/poa_exp_spells/nw_s0_searlght.nss +++ b/_haks/poa_exp_spells/nw_s0_searlght.nss @@ -94,7 +94,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) nDamage = nDamage + (nDamage/2); } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(oCaster, nCasterLevel); //Set the damage effect eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); //Apply the damage effect and VFX impact diff --git a/_haks/poa_exp_spells/nw_s0_shadshld.ncs b/_haks/poa_exp_spells/nw_s0_shadshld.ncs index ef336004..d6fd376b 100644 Binary files a/_haks/poa_exp_spells/nw_s0_shadshld.ncs and b/_haks/poa_exp_spells/nw_s0_shadshld.ncs 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 index 3b471f25..90b9ee81 100644 Binary files a/_haks/poa_exp_spells/nw_s0_sleep.ncs and b/_haks/poa_exp_spells/nw_s0_sleep.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_sndburst.ncs b/_haks/poa_exp_spells/nw_s0_sndburst.ncs index ce59b559..b9e994e7 100644 Binary files a/_haks/poa_exp_spells/nw_s0_sndburst.ncs and b/_haks/poa_exp_spells/nw_s0_sndburst.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_sndburst.nss b/_haks/poa_exp_spells/nw_s0_sndburst.nss index 61c04d3a..f176c35c 100644 --- a/_haks/poa_exp_spells/nw_s0_sndburst.nss +++ b/_haks/poa_exp_spells/nw_s0_sndburst.nss @@ -91,6 +91,7 @@ void main() nDamage += nDamage / 2; //Set the damage effect + nDamage += SpellDamagePerDice(oCaster, 1); effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); //Apply the VFX impact and damage effect DelayCommand(0.01, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); diff --git a/_haks/poa_exp_spells/nw_s0_spmantle.ncs b/_haks/poa_exp_spells/nw_s0_spmantle.ncs index 6225c513..2117b6a3 100644 Binary files a/_haks/poa_exp_spells/nw_s0_spmantle.ncs and b/_haks/poa_exp_spells/nw_s0_spmantle.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_stormvenc.ncs b/_haks/poa_exp_spells/nw_s0_stormvenc.ncs index 446d932e..15e323f5 100644 Binary files a/_haks/poa_exp_spells/nw_s0_stormvenc.ncs and b/_haks/poa_exp_spells/nw_s0_stormvenc.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_stormvenc.nss b/_haks/poa_exp_spells/nw_s0_stormvenc.nss index 2a436115..13a7e7df 100644 --- a/_haks/poa_exp_spells/nw_s0_stormvenc.nss +++ b/_haks/poa_exp_spells/nw_s0_stormvenc.nss @@ -46,7 +46,8 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); object oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE); while(GetIsObjectValid(oTarget)) { - int nDamage = d6(CasterLvl) + ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + int nDamage = d6(CasterLvl); + nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 6); effect eElec = PRCEffectDamage(oTarget, nDamage, ChangedElementalDamage(GetAreaOfEffectCreator(), DAMAGE_TYPE_ELECTRICAL)); if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, GetAreaOfEffectCreator())) @@ -59,6 +60,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); { int nDC = PRCGetSaveDC(oTarget,GetAreaOfEffectCreator()); int nAcid = d6(CasterLvl/2); + nAcid += SpellDamagePerDice(GetAreaOfEffectCreator(), 3); // 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; diff --git a/_haks/poa_exp_spells/nw_s0_sunbeam.ncs b/_haks/poa_exp_spells/nw_s0_sunbeam.ncs index fd1e4e26..eff40159 100644 Binary files a/_haks/poa_exp_spells/nw_s0_sunbeam.ncs and b/_haks/poa_exp_spells/nw_s0_sunbeam.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_sunbeam.nss b/_haks/poa_exp_spells/nw_s0_sunbeam.nss index 99a459bf..22651c57 100644 --- a/_haks/poa_exp_spells/nw_s0_sunbeam.nss +++ b/_haks/poa_exp_spells/nw_s0_sunbeam.nss @@ -113,7 +113,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); nDamage = nDamage + (nDamage/2); } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel); int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); //Check that a reflex save was made. diff --git a/_haks/poa_exp_spells/nw_s0_vamptch.ncs b/_haks/poa_exp_spells/nw_s0_vamptch.ncs index 344ddfa0..5aa6214a 100644 Binary files a/_haks/poa_exp_spells/nw_s0_vamptch.ncs and b/_haks/poa_exp_spells/nw_s0_vamptch.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_vamptch.nss b/_haks/poa_exp_spells/nw_s0_vamptch.nss index bcca6423..f5b64a2e 100644 --- a/_haks/poa_exp_spells/nw_s0_vamptch.nss +++ b/_haks/poa_exp_spells/nw_s0_vamptch.nss @@ -47,6 +47,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) nDDice = 20; int nDamage = PRCMaximizeOrEmpower(6,nDDice,nMetaMagic); + nDamage += SpellDamagePerDice(oCaster, nDDice); int nDuration = nCasterLevel/2; if ((nMetaMagic & METAMAGIC_EXTEND)) @@ -86,7 +87,6 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) { 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); diff --git a/_haks/poa_exp_spells/nw_s0_virtue.ncs b/_haks/poa_exp_spells/nw_s0_virtue.ncs index 7374bb59..4f2f3ab1 100644 Binary files a/_haks/poa_exp_spells/nw_s0_virtue.ncs and b/_haks/poa_exp_spells/nw_s0_virtue.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_wallfirea.ncs b/_haks/poa_exp_spells/nw_s0_wallfirea.ncs index e6c749c4..d54dd0f3 100644 Binary files a/_haks/poa_exp_spells/nw_s0_wallfirea.ncs and b/_haks/poa_exp_spells/nw_s0_wallfirea.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_wallfirea.nss b/_haks/poa_exp_spells/nw_s0_wallfirea.nss index 6fa2385c..4e08eeea 100644 --- a/_haks/poa_exp_spells/nw_s0_wallfirea.nss +++ b/_haks/poa_exp_spells/nw_s0_wallfirea.nss @@ -53,7 +53,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 4); nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget,GetAreaOfEffectCreator())), SAVING_THROW_TYPE_FIRE); if(nDamage > 0) { diff --git a/_haks/poa_exp_spells/nw_s0_wallfirec.ncs b/_haks/poa_exp_spells/nw_s0_wallfirec.ncs index 5707b2b9..9ed3a895 100644 Binary files a/_haks/poa_exp_spells/nw_s0_wallfirec.ncs and b/_haks/poa_exp_spells/nw_s0_wallfirec.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_wallfirec.nss b/_haks/poa_exp_spells/nw_s0_wallfirec.nss index 339c63df..82b69599 100644 --- a/_haks/poa_exp_spells/nw_s0_wallfirec.nss +++ b/_haks/poa_exp_spells/nw_s0_wallfirec.nss @@ -72,7 +72,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 4); int nDC = PRCGetSaveDC(oTarget,GetAreaOfEffectCreator()); diff --git a/_haks/poa_exp_spells/nw_s0_weird.ncs b/_haks/poa_exp_spells/nw_s0_weird.ncs index a87cd405..21e3f578 100644 Binary files a/_haks/poa_exp_spells/nw_s0_weird.ncs and b/_haks/poa_exp_spells/nw_s0_weird.ncs differ diff --git a/_haks/poa_exp_spells/nw_s0_weird.nss b/_haks/poa_exp_spells/nw_s0_weird.nss index 766324cf..a49911e3 100644 --- a/_haks/poa_exp_spells/nw_s0_weird.nss +++ b/_haks/poa_exp_spells/nw_s0_weird.nss @@ -105,7 +105,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ILLUSION); nDamage = FloatToInt( IntToFloat(nDamage) * 1.5 ); } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, 3); //Set damage effect eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL); diff --git a/_haks/poa_exp_spells/nw_s0_wordfaith.ncs b/_haks/poa_exp_spells/nw_s0_wordfaith.ncs index cdb10ef4..76a088e7 100644 Binary files a/_haks/poa_exp_spells/nw_s0_wordfaith.ncs and b/_haks/poa_exp_spells/nw_s0_wordfaith.ncs differ diff --git a/_haks/poa_exp_spells/sp_aberrate.ncs b/_haks/poa_exp_spells/sp_aberrate.ncs index 7585e297..b102c973 100644 Binary files a/_haks/poa_exp_spells/sp_aberrate.ncs and b/_haks/poa_exp_spells/sp_aberrate.ncs differ diff --git a/_haks/poa_exp_spells/sp_acidstorm.ncs b/_haks/poa_exp_spells/sp_acidstorm.ncs index 4d78faee..11380ef5 100644 Binary files a/_haks/poa_exp_spells/sp_acidstorm.ncs and b/_haks/poa_exp_spells/sp_acidstorm.ncs differ diff --git a/_haks/poa_exp_spells/sp_agnazscorch.ncs b/_haks/poa_exp_spells/sp_agnazscorch.ncs index 951e081b..70b48aa3 100644 Binary files a/_haks/poa_exp_spells/sp_agnazscorch.ncs and b/_haks/poa_exp_spells/sp_agnazscorch.ncs differ diff --git a/_haks/poa_exp_spells/sp_apoc_sky.ncs b/_haks/poa_exp_spells/sp_apoc_sky.ncs index 390eb23e..de3b7847 100644 Binary files a/_haks/poa_exp_spells/sp_apoc_sky.ncs and b/_haks/poa_exp_spells/sp_apoc_sky.ncs differ diff --git a/_haks/poa_exp_spells/sp_apoc_sky.nss b/_haks/poa_exp_spells/sp_apoc_sky.nss index f019711c..d2ae1531 100644 --- a/_haks/poa_exp_spells/sp_apoc_sky.nss +++ b/_haks/poa_exp_spells/sp_apoc_sky.nss @@ -91,7 +91,7 @@ void main() { nDam = d8(nCasterLevel); } - + nDam += SpellDamagePerDice(oPC, 10); effect eDam = PRCEffectDamage(oObject, nDam, nDamType); //Apply diff --git a/_haks/poa_exp_spells/sp_armordark.ncs b/_haks/poa_exp_spells/sp_armordark.ncs index 2b2612c9..e3bdae03 100644 Binary files a/_haks/poa_exp_spells/sp_armordark.ncs and b/_haks/poa_exp_spells/sp_armordark.ncs differ diff --git a/_haks/poa_exp_spells/sp_ayailla_rb.ncs b/_haks/poa_exp_spells/sp_ayailla_rb.ncs index 7706affe..cc3e947d 100644 Binary files a/_haks/poa_exp_spells/sp_ayailla_rb.ncs and b/_haks/poa_exp_spells/sp_ayailla_rb.ncs differ diff --git a/_haks/poa_exp_spells/sp_ayailla_rb.nss b/_haks/poa_exp_spells/sp_ayailla_rb.nss index 1a7f4d50..0ba5f94d 100644 --- a/_haks/poa_exp_spells/sp_ayailla_rb.nss +++ b/_haks/poa_exp_spells/sp_ayailla_rb.nss @@ -85,7 +85,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, PRCMin(5, nCasterLvl/2)); if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC)) nDam = (nDam/2); //Apply damage diff --git a/_haks/poa_exp_spells/sp_bigby_sf.ncs b/_haks/poa_exp_spells/sp_bigby_sf.ncs index a556f830..5c112219 100644 Binary files a/_haks/poa_exp_spells/sp_bigby_sf.ncs and b/_haks/poa_exp_spells/sp_bigby_sf.ncs differ diff --git a/_haks/poa_exp_spells/sp_bigby_sf.nss b/_haks/poa_exp_spells/sp_bigby_sf.nss index f69a4d04..da82befd 100644 --- a/_haks/poa_exp_spells/sp_bigby_sf.nss +++ b/_haks/poa_exp_spells/sp_bigby_sf.nss @@ -71,7 +71,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, PRCMin(5, nCasterLevel/2)); //save if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, PRCGetSaveDC(oTarget, oPC), SAVING_THROW_TYPE_SPELL)) { diff --git a/_haks/poa_exp_spells/sp_bigby_trip.ncs b/_haks/poa_exp_spells/sp_bigby_trip.ncs index 5b35ecdd..78f02d4b 100644 Binary files a/_haks/poa_exp_spells/sp_bigby_trip.ncs and b/_haks/poa_exp_spells/sp_bigby_trip.ncs differ diff --git a/_haks/poa_exp_spells/sp_blastfrc.ncs b/_haks/poa_exp_spells/sp_blastfrc.ncs index a7fafef6..81402a92 100644 Binary files a/_haks/poa_exp_spells/sp_blastfrc.ncs and b/_haks/poa_exp_spells/sp_blastfrc.ncs differ diff --git a/_haks/poa_exp_spells/sp_blastfrc.nss b/_haks/poa_exp_spells/sp_blastfrc.nss index e478ac2c..89f7dae1 100644 --- a/_haks/poa_exp_spells/sp_blastfrc.nss +++ b/_haks/poa_exp_spells/sp_blastfrc.nss @@ -53,7 +53,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) int nDam = d6(nDice); if(nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 6 * nDice; if(nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - + nDam += SpellDamagePerDice(oCaster, nDice); if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_SPELL)) { nDam /= 2; diff --git a/_haks/poa_exp_spells/sp_blessbahamut.ncs b/_haks/poa_exp_spells/sp_blessbahamut.ncs index e5058e75..0d9978e0 100644 Binary files a/_haks/poa_exp_spells/sp_blessbahamut.ncs and b/_haks/poa_exp_spells/sp_blessbahamut.ncs differ diff --git a/_haks/poa_exp_spells/sp_blsflm.ncs b/_haks/poa_exp_spells/sp_blsflm.ncs index df60f525..41b57a9c 100644 Binary files a/_haks/poa_exp_spells/sp_blsflm.ncs and b/_haks/poa_exp_spells/sp_blsflm.ncs differ diff --git a/_haks/poa_exp_spells/sp_bolt_glory.ncs b/_haks/poa_exp_spells/sp_bolt_glory.ncs index fd229b03..eabe80fb 100644 Binary files a/_haks/poa_exp_spells/sp_bolt_glory.ncs and b/_haks/poa_exp_spells/sp_bolt_glory.ncs differ diff --git a/_haks/poa_exp_spells/sp_bolt_glory.nss b/_haks/poa_exp_spells/sp_bolt_glory.nss index 957b9e05..11b6f00d 100644 --- a/_haks/poa_exp_spells/sp_bolt_glory.nss +++ b/_haks/poa_exp_spells/sp_bolt_glory.nss @@ -80,6 +80,7 @@ void main() { nDam += (nDam/2); } + nDam += SpellDamagePerDice(oPC, PRCMin(nCasterLevel,15)); } if((nRace == RACIAL_TYPE_ELEMENTAL) || @@ -98,6 +99,7 @@ void main() { nDam += (nDam/2); } + nDam += SpellDamagePerDice(oPC, PRCMin(nCasterLevel/2, 7)); } SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_DIVINE), oTarget); diff --git a/_haks/poa_exp_spells/sp_celest_bld.ncs b/_haks/poa_exp_spells/sp_celest_bld.ncs index a6db1b4b..57578d7d 100644 Binary files a/_haks/poa_exp_spells/sp_celest_bld.ncs and b/_haks/poa_exp_spells/sp_celest_bld.ncs differ diff --git a/_haks/poa_exp_spells/sp_chaavs_lgh.ncs b/_haks/poa_exp_spells/sp_chaavs_lgh.ncs index 81e9479c..1aff50d3 100644 Binary files a/_haks/poa_exp_spells/sp_chaavs_lgh.ncs and b/_haks/poa_exp_spells/sp_chaavs_lgh.ncs differ diff --git a/_haks/poa_exp_spells/sp_chan_pyrob.ncs b/_haks/poa_exp_spells/sp_chan_pyrob.ncs index 7c96308b..08028cca 100644 Binary files a/_haks/poa_exp_spells/sp_chan_pyrob.ncs and b/_haks/poa_exp_spells/sp_chan_pyrob.ncs differ diff --git a/_haks/poa_exp_spells/sp_close_wounds.ncs b/_haks/poa_exp_spells/sp_close_wounds.ncs index aa333f06..36cc12b6 100644 Binary files a/_haks/poa_exp_spells/sp_close_wounds.ncs and b/_haks/poa_exp_spells/sp_close_wounds.ncs differ diff --git a/_haks/poa_exp_spells/sp_close_wounds.nss b/_haks/poa_exp_spells/sp_close_wounds.nss index a70bcc2a..c0cfbdbc 100644 --- a/_haks/poa_exp_spells/sp_close_wounds.nss +++ b/_haks/poa_exp_spells/sp_close_wounds.nss @@ -54,6 +54,7 @@ int nHeal = d4(nCasterLvl)+8; if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) { //save for 1/2 dam + nHeal += SpellDamagePerDice(oPC, 2); if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, oPC), SAVING_THROW_TYPE_POSITIVE)) nHeal = nHeal/2; diff --git a/_haks/poa_exp_spells/sp_cloud_achaiA.ncs b/_haks/poa_exp_spells/sp_cloud_achaiA.ncs index 3e81c195..b73ef778 100644 Binary files a/_haks/poa_exp_spells/sp_cloud_achaiA.ncs and b/_haks/poa_exp_spells/sp_cloud_achaiA.ncs differ diff --git a/_haks/poa_exp_spells/sp_cloud_achaiA.nss b/_haks/poa_exp_spells/sp_cloud_achaiA.nss index 5cb6d659..9dd90011 100644 --- a/_haks/poa_exp_spells/sp_cloud_achaiA.nss +++ b/_haks/poa_exp_spells/sp_cloud_achaiA.nss @@ -31,7 +31,7 @@ void main() float fDuration = (nCasterLvl * 600.0f); int nDam = d6(nCasterLvl/2)+2; int nDC = PRCGetSaveDC(oTarget, oPC); - + nDam += SpellDamagePerDice(oPC, 2); //Enter Metamagic conditions if ((nMetaMagic & METAMAGIC_EXTEND)) { diff --git a/_haks/poa_exp_spells/sp_clutch_orcus.ncs b/_haks/poa_exp_spells/sp_clutch_orcus.ncs index 46923527..c859bfa0 100644 Binary files a/_haks/poa_exp_spells/sp_clutch_orcus.ncs and b/_haks/poa_exp_spells/sp_clutch_orcus.ncs differ diff --git a/_haks/poa_exp_spells/sp_clutch_orcus.nss b/_haks/poa_exp_spells/sp_clutch_orcus.nss index 6dca8b7c..7ce24249 100644 --- a/_haks/poa_exp_spells/sp_clutch_orcus.nss +++ b/_haks/poa_exp_spells/sp_clutch_orcus.nss @@ -35,11 +35,26 @@ Created: 3/28/05 #include "prc_inc_spells" #include "prc_add_spell_dc" + +void EFConcentrationHB(object oPC, object oTarget) +{ + if(GetBreakConcentrationCheck(oPC) > 0) + { + //FloatingTextStringOnCreature("Crafting: Concentration lost!", oPC); + //DeleteLocalInt(oPC, PRC_CRAFT_HB); + //return; + SetLocalInt(oPC, "EFConcBroken", 1); + } + else + DelayCommand(6.0f, EFConcentrationHB(oPC, oTarget)); +} + + void CrushLoop(object oTarget, object oPC, int bEndSpell, int nDC) { int nCasterLvl = PRCGetCasterLevel(oPC); //Conc check - if(GetBreakConcentrationCheck(oPC)) + if(GetLocalInt(oPC, "EFConcBroken") == 1) { bEndSpell = TRUE; } @@ -58,6 +73,7 @@ int nCasterLvl = PRCGetCasterLevel(oPC); 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 @@ -93,6 +109,7 @@ void main() if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) { //start loop + DelayCommand(6.0f, EFConcentrationHB(oPC, oTarget)); CrushLoop(oTarget, oPC, bEndSpell, nDC); } diff --git a/_haks/poa_exp_spells/sp_curimpbl.ncs b/_haks/poa_exp_spells/sp_curimpbl.ncs index fdf31976..890b6e99 100644 Binary files a/_haks/poa_exp_spells/sp_curimpbl.ncs and b/_haks/poa_exp_spells/sp_curimpbl.ncs differ diff --git a/_haks/poa_exp_spells/sp_curpfail.ncs b/_haks/poa_exp_spells/sp_curpfail.ncs index 6993085d..47dd4286 100644 Binary files a/_haks/poa_exp_spells/sp_curpfail.ncs and b/_haks/poa_exp_spells/sp_curpfail.ncs differ diff --git a/_haks/poa_exp_spells/sp_damng_darkA.ncs b/_haks/poa_exp_spells/sp_damng_darkA.ncs index 0f75ddad..dafacc1a 100644 Binary files a/_haks/poa_exp_spells/sp_damng_darkA.ncs and b/_haks/poa_exp_spells/sp_damng_darkA.ncs differ diff --git a/_haks/poa_exp_spells/sp_damng_darkA.nss b/_haks/poa_exp_spells/sp_damng_darkA.nss index 5f64ccca..cb93bfe6 100644 --- a/_haks/poa_exp_spells/sp_damng_darkA.nss +++ b/_haks/poa_exp_spells/sp_damng_darkA.nss @@ -34,7 +34,7 @@ Created: 6/12/06 */ //::////////////////////////////////////////////// //::////////////////////////////////////////////// -void DarkLoop(object oTarget); +void DarkLoop(object oTarget, object oPC); #include "prc_alterations" @@ -53,12 +53,12 @@ void main() effect eLink = EffectLinkEffects(eDark, eDur); SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, (600.0f * nCasterLvl)); - DarkLoop(oTarget); + DarkLoop(oTarget, oPC); PRCSetSchool(); } -void DarkLoop(object oTarget) +void DarkLoop(object oTarget, object oPC) { object oPC = GetAreaOfEffectCreator(); int nCasterLvl = PRCGetCasterLevel(oPC); @@ -67,11 +67,13 @@ int nCasterLvl = PRCGetCasterLevel(oPC); { if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_GOOD) { + int nDam = SpellDamagePerDice(oPC, 2); SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, d6(nCasterLvl/2)+2, DAMAGE_TYPE_DIVINE), oTarget); } else if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_NEUTRAL) { + int nDam = SpellDamagePerDice(oPC, 2); SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, d6(nCasterLvl/2)+2, DAMAGE_TYPE_DIVINE), oTarget); } @@ -81,6 +83,6 @@ int nCasterLvl = PRCGetCasterLevel(oPC); } } - DelayCommand(6.0f, DarkLoop(oTarget)); + DelayCommand(6.0f, DarkLoop(oTarget, oPC)); } \ 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 index eb9bc749..96d40b56 100644 Binary files a/_haks/poa_exp_spells/sp_dancg_web.ncs and b/_haks/poa_exp_spells/sp_dancg_web.ncs differ diff --git a/_haks/poa_exp_spells/sp_dancg_web.nss b/_haks/poa_exp_spells/sp_dancg_web.nss index 6268370e..0ffebd51 100644 --- a/_haks/poa_exp_spells/sp_dancg_web.nss +++ b/_haks/poa_exp_spells/sp_dancg_web.nss @@ -70,7 +70,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, nMin); SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) diff --git a/_haks/poa_exp_spells/sp_darkbolt.ncs b/_haks/poa_exp_spells/sp_darkbolt.ncs index 5d51352b..e1f60fde 100644 Binary files a/_haks/poa_exp_spells/sp_darkbolt.ncs and b/_haks/poa_exp_spells/sp_darkbolt.ncs differ diff --git a/_haks/poa_exp_spells/sp_darkbolt.nss b/_haks/poa_exp_spells/sp_darkbolt.nss index 1ec8a594..98fc7473 100644 --- a/_haks/poa_exp_spells/sp_darkbolt.nss +++ b/_haks/poa_exp_spells/sp_darkbolt.nss @@ -47,7 +47,7 @@ void main() { nDam = nDam + nDam/2; //Damage/Healing is +50% } - + nDam += SpellDamagePerDice(OBJECT_SELF, 2); fTime = fDelay; fDelay2 += 0.1; fTime += fDelay2; diff --git a/_haks/poa_exp_spells/sp_darkbolt1.ncs b/_haks/poa_exp_spells/sp_darkbolt1.ncs index 66f66719..e02c830d 100644 Binary files a/_haks/poa_exp_spells/sp_darkbolt1.ncs and b/_haks/poa_exp_spells/sp_darkbolt1.ncs differ diff --git a/_haks/poa_exp_spells/sp_darkbolt1.nss b/_haks/poa_exp_spells/sp_darkbolt1.nss index 3f5fa847..3c1f718f 100644 --- a/_haks/poa_exp_spells/sp_darkbolt1.nss +++ b/_haks/poa_exp_spells/sp_darkbolt1.nss @@ -1,6 +1,6 @@ #include "prc_inc_spells" #include "prc_add_spell_dc" -void DarkBolt(object oTarget,int nMissiles, int nDC , int nMetaMagic) +void DarkBolt(object oTarget,int nMissiles, int nDC , int nMetaMagic, object oPC) { if (GetIsDead(oTarget)) return; @@ -30,7 +30,7 @@ void DarkBolt(object oTarget,int nMissiles, int nDC , int nMetaMagic) { nDam = nDam + nDam/2; //Damage/Healing is +50% } - + nDam += SpellDamagePerDice(oPC, 2); fTime = fDelay; fDelay2 += 0.1; fTime += fDelay2; @@ -72,7 +72,7 @@ void DarkBolt(object oTarget,int nMissiles, int nDC , int nMetaMagic) } if (nMissiles>0) - DelayCommand(6.2,DarkBolt(oTarget,nMissiles,nDC,nMetaMagic)); + DelayCommand(6.2,DarkBolt(oTarget,nMissiles,nDC,nMetaMagic, oPC)); } @@ -122,7 +122,7 @@ void main() { nDam = nDam + nDam/2; //Damage/Healing is +50% } - + nDam += SpellDamagePerDice(OBJECT_SELF, 2); fTime = fDelay; fDelay2 += 0.1; fTime += fDelay2; @@ -162,7 +162,7 @@ void main() } nMissiles--; if (nMissiles>0) - DelayCommand(6.2,DarkBolt( oTarget,nMissiles,nDC,nMetaMagic)); + DelayCommand(6.2,DarkBolt( oTarget,nMissiles,nDC,nMetaMagic, OBJECT_SELF)); PRCSetSchool(); diff --git a/_haks/poa_exp_spells/sp_deep_slumber.ncs b/_haks/poa_exp_spells/sp_deep_slumber.ncs index 6bf103ac..d8e09382 100644 Binary files a/_haks/poa_exp_spells/sp_deep_slumber.ncs and b/_haks/poa_exp_spells/sp_deep_slumber.ncs differ diff --git a/_haks/poa_exp_spells/sp_deflect.ncs b/_haks/poa_exp_spells/sp_deflect.ncs index 4f1f2434..3c2c92b9 100644 Binary files a/_haks/poa_exp_spells/sp_deflect.ncs and b/_haks/poa_exp_spells/sp_deflect.ncs differ diff --git a/_haks/poa_exp_spells/sp_dispell_tch.ncs b/_haks/poa_exp_spells/sp_dispell_tch.ncs index e887707e..25d7c707 100644 Binary files a/_haks/poa_exp_spells/sp_dispell_tch.ncs and b/_haks/poa_exp_spells/sp_dispell_tch.ncs differ diff --git a/_haks/poa_exp_spells/sp_disrpt_undead.ncs b/_haks/poa_exp_spells/sp_disrpt_undead.ncs index 81fb0f45..616f5276 100644 Binary files a/_haks/poa_exp_spells/sp_disrpt_undead.ncs and b/_haks/poa_exp_spells/sp_disrpt_undead.ncs differ diff --git a/_haks/poa_exp_spells/sp_disrpt_undead.nss b/_haks/poa_exp_spells/sp_disrpt_undead.nss index 5a0cd5b8..60ce22d4 100644 --- a/_haks/poa_exp_spells/sp_disrpt_undead.nss +++ b/_haks/poa_exp_spells/sp_disrpt_undead.nss @@ -45,13 +45,121 @@ Created: 7/6/07 //::////////////////////////////////////////////// //::////////////////////////////////////////////// -#include "prc_inc_sp_tch" +#include "prc_inc_sp_tch" +#include "prc_sp_func" + +int DoSpell(object oCaster, object oTarget, int nCasterLevel) +{ + int nSpell = GetSpellId(); + 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); + nDam += SpellDamagePerDice(oCaster, 1); + if(nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 6; + } + + if(nSpell == SPELL_GREATER_DISRUPT_UNDEAD) + { + nBeam = VFX_BEAM_BLACK; + nDam = d6(3); + nDam += SpellDamagePerDice(oCaster, 3); + if(nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 18; + } + + if(nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); + + //Beam that acts accordingly + effect eVis = EffectBeam(nBeam, oCaster, 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(oCaster, oTarget, nCasterLevel + 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, oCaster) && (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); + } + } + } + + return nTouch; // return TRUE if spell charges should be decremented +} + +void main() +{ + if (!X2PreSpellCastCode()) return; + PRCSetSchool(SPELL_SCHOOL_NECROMANCY); + 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(); +} + +/* #include "prc_inc_sp_tch" void main() { object oPC = OBJECT_SELF; object oTarget = PRCGetSpellTargetObject(); - int nSpell = GetSpellId(); + int nSpell = PRCGetSpellId(); int nCasterLvl = PRCGetCasterLevel(oPC); int nBeam; int nDam; @@ -63,7 +171,7 @@ void main() { nBeam = VFX_BEAM_HOLY; nDam = d6(1)+ (nCasterLvl/4); - + nDam += SpellDamagePerDice(oPC, 1); if(nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 6+(nCasterLvl/4); } @@ -71,7 +179,7 @@ void main() { nBeam = VFX_BEAM_BLACK; nDam = d6(3)+ (nCasterLvl/3); - + nDam += SpellDamagePerDice(oPC, 3); if(nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 18+ (nCasterLvl/3); } @@ -124,4 +232,4 @@ void main() } } PRCSetSchool(); -} \ No newline at end of file +} */ \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_divprot.ncs b/_haks/poa_exp_spells/sp_divprot.ncs index a2b540f4..b5afed74 100644 Binary files a/_haks/poa_exp_spells/sp_divprot.ncs and b/_haks/poa_exp_spells/sp_divprot.ncs 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 index ebb151d6..8ccf90c3 100644 Binary files a/_haks/poa_exp_spells/sp_dmnd_spray.ncs and b/_haks/poa_exp_spells/sp_dmnd_spray.ncs differ diff --git a/_haks/poa_exp_spells/sp_dmnd_spray.nss b/_haks/poa_exp_spells/sp_dmnd_spray.nss index d92f7914..24004660 100644 --- a/_haks/poa_exp_spells/sp_dmnd_spray.nss +++ b/_haks/poa_exp_spells/sp_dmnd_spray.nss @@ -71,7 +71,7 @@ void main() { fDur += fDur; } - + nDam += SpellDamagePerDice(oPC, PRCMin(nCasterLvl, 10)); if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) { nDC = PRCGetSaveDC(oTarget, oPC); diff --git a/_haks/poa_exp_spells/sp_doom_scarab.ncs b/_haks/poa_exp_spells/sp_doom_scarab.ncs index 6fbb3ed9..681d74b2 100644 Binary files a/_haks/poa_exp_spells/sp_doom_scarab.ncs and b/_haks/poa_exp_spells/sp_doom_scarab.ncs differ diff --git a/_haks/poa_exp_spells/sp_doom_scarab.nss b/_haks/poa_exp_spells/sp_doom_scarab.nss index 6b2fac22..17cae9f4 100644 --- a/_haks/poa_exp_spells/sp_doom_scarab.nss +++ b/_haks/poa_exp_spells/sp_doom_scarab.nss @@ -75,7 +75,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, PRCMin(nCasterLvl/2, 10)); if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) { nDam = (nDam/2); diff --git a/_haks/poa_exp_spells/sp_elemstrike.ncs b/_haks/poa_exp_spells/sp_elemstrike.ncs index caf7132a..05206bf6 100644 Binary files a/_haks/poa_exp_spells/sp_elemstrike.ncs and b/_haks/poa_exp_spells/sp_elemstrike.ncs differ diff --git a/_haks/poa_exp_spells/sp_elemstrike.nss b/_haks/poa_exp_spells/sp_elemstrike.nss index 9dcaa3d6..72caf89c 100644 --- a/_haks/poa_exp_spells/sp_elemstrike.nss +++ b/_haks/poa_exp_spells/sp_elemstrike.nss @@ -122,7 +122,8 @@ void main() 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; + nDamage += nDice; + nDamage += SpellDamagePerDice(oCaster, 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); diff --git a/_haks/poa_exp_spells/sp_energz_ptn.ncs b/_haks/poa_exp_spells/sp_energz_ptn.ncs index 179dac16..1668cca2 100644 Binary files a/_haks/poa_exp_spells/sp_energz_ptn.ncs and b/_haks/poa_exp_spells/sp_energz_ptn.ncs differ diff --git a/_haks/poa_exp_spells/sp_exalt_fury.ncs b/_haks/poa_exp_spells/sp_exalt_fury.ncs index 41edcdfd..41ef1252 100644 Binary files a/_haks/poa_exp_spells/sp_exalt_fury.ncs and b/_haks/poa_exp_spells/sp_exalt_fury.ncs differ diff --git a/_haks/poa_exp_spells/sp_exaltd_raim.ncs b/_haks/poa_exp_spells/sp_exaltd_raim.ncs index 7ddba856..9933c4bb 100644 Binary files a/_haks/poa_exp_spells/sp_exaltd_raim.ncs and b/_haks/poa_exp_spells/sp_exaltd_raim.ncs differ diff --git a/_haks/poa_exp_spells/sp_exaltd_raim.nss b/_haks/poa_exp_spells/sp_exaltd_raim.nss index ac17c6cd..147410ad 100644 --- a/_haks/poa_exp_spells/sp_exaltd_raim.nss +++ b/_haks/poa_exp_spells/sp_exaltd_raim.nss @@ -36,11 +36,8 @@ Created: 6/28/06 */ //::////////////////////////////////////////////// //::////////////////////////////////////////////// - - - #include "prc_inc_spells" -#include "prc_ip_srcost.nss" +#include "prc_ip_srcost" int GetERSpellResistance(int nCasterLvl) { @@ -101,7 +98,7 @@ void main() } effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); - itemproperty ipArmor = ItemPropertyACBonus(nBonusAC += nArmor); + itemproperty ipArmor = ItemPropertyACBonus(nBonusAC + nArmor); itemproperty ipDR = ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_2, IP_CONST_DAMAGESOAK_10_HP); itemproperty ipSR = ItemPropertyBonusSpellResistance(nSR); diff --git a/_haks/poa_exp_spells/sp_extr_wtrele.ncs b/_haks/poa_exp_spells/sp_extr_wtrele.ncs index a4862f42..20ffad8d 100644 Binary files a/_haks/poa_exp_spells/sp_extr_wtrele.ncs and b/_haks/poa_exp_spells/sp_extr_wtrele.ncs differ diff --git a/_haks/poa_exp_spells/sp_extr_wtrele.nss b/_haks/poa_exp_spells/sp_extr_wtrele.nss index 3d44586a..9f87e036 100644 --- a/_haks/poa_exp_spells/sp_extr_wtrele.nss +++ b/_haks/poa_exp_spells/sp_extr_wtrele.nss @@ -69,7 +69,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, PRCMin(nCasterLvl, 20)); //SR check if(!PRCDoResistSpell(oPC, oTarget, (nCasterLvl + SPGetPenetr()))) { diff --git a/_haks/poa_exp_spells/sp_false_life.ncs b/_haks/poa_exp_spells/sp_false_life.ncs index 2aba0497..5d29bd43 100644 Binary files a/_haks/poa_exp_spells/sp_false_life.ncs and b/_haks/poa_exp_spells/sp_false_life.ncs differ diff --git a/_haks/poa_exp_spells/sp_fester_death.ncs b/_haks/poa_exp_spells/sp_fester_death.ncs index 12b6e4f6..8473f744 100644 Binary files a/_haks/poa_exp_spells/sp_fester_death.ncs and b/_haks/poa_exp_spells/sp_fester_death.ncs differ diff --git a/_haks/poa_exp_spells/sp_fester_death.nss b/_haks/poa_exp_spells/sp_fester_death.nss index fa82c027..74a8e55b 100644 --- a/_haks/poa_exp_spells/sp_fester_death.nss +++ b/_haks/poa_exp_spells/sp_fester_death.nss @@ -30,7 +30,7 @@ Created: 3/26/05 #include "prc_inc_spells" #include "prc_add_spell_dc" -void FesterLoop(object oTarget, int nConc, int nHP) +void FesterLoop(object oTarget, int nConc, int nHP, object oPC) { if (nConc == FALSE) { @@ -38,6 +38,7 @@ void FesterLoop(object oTarget, int nConc, int nHP) } int nDam = d6(20); + nDam += SpellDamagePerDice(oPC, 2); nHP = GetCurrentHitPoints(oTarget); effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); @@ -54,7 +55,7 @@ void FesterLoop(object oTarget, int nConc, int nHP) } //Loop - DelayCommand(6.0f, FesterLoop(oTarget, nConc, nHP)); + DelayCommand(6.0f, FesterLoop(oTarget, nConc, nHP, oPC)); } @@ -81,7 +82,7 @@ void main() { if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL, oPC, 1.0)) { - FesterLoop(oTarget, nConc, nHP); + FesterLoop(oTarget, nConc, nHP, oPC); } } } diff --git a/_haks/poa_exp_spells/sp_fire_trapA.ncs b/_haks/poa_exp_spells/sp_fire_trapA.ncs index 37040596..a8a1206b 100644 Binary files a/_haks/poa_exp_spells/sp_fire_trapA.ncs and b/_haks/poa_exp_spells/sp_fire_trapA.ncs differ diff --git a/_haks/poa_exp_spells/sp_fire_trapA.nss b/_haks/poa_exp_spells/sp_fire_trapA.nss index 5e97ea1f..d8f9d011 100644 --- a/_haks/poa_exp_spells/sp_fire_trapA.nss +++ b/_haks/poa_exp_spells/sp_fire_trapA.nss @@ -82,6 +82,7 @@ void main() nDam = 4 + nCasterLvl; } if ((nMetaMagic & METAMAGIC_EMPOWER)) nDam +=(nDam/2); + nDam += SpellDamagePerDice(oCaster, 1); //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); //Change damage according to Reflex, Evasion and Improved Evasion diff --git a/_haks/poa_exp_spells/sp_fireburst.ncs b/_haks/poa_exp_spells/sp_fireburst.ncs index 91962ae7..0fdc86cd 100644 Binary files a/_haks/poa_exp_spells/sp_fireburst.ncs and b/_haks/poa_exp_spells/sp_fireburst.ncs differ diff --git a/_haks/poa_exp_spells/sp_flesh_armor.ncs b/_haks/poa_exp_spells/sp_flesh_armor.ncs index dc4f925f..96cd5e1b 100644 Binary files a/_haks/poa_exp_spells/sp_flesh_armor.ncs and b/_haks/poa_exp_spells/sp_flesh_armor.ncs differ diff --git a/_haks/poa_exp_spells/sp_flesh_rip.ncs b/_haks/poa_exp_spells/sp_flesh_rip.ncs index ab1b4d11..a49b14d8 100644 Binary files a/_haks/poa_exp_spells/sp_flesh_rip.ncs and b/_haks/poa_exp_spells/sp_flesh_rip.ncs differ diff --git a/_haks/poa_exp_spells/sp_flesh_rip.nss b/_haks/poa_exp_spells/sp_flesh_rip.nss index 4a3e1c2d..5587eb05 100644 --- a/_haks/poa_exp_spells/sp_flesh_rip.nss +++ b/_haks/poa_exp_spells/sp_flesh_rip.nss @@ -68,7 +68,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, nDice); //Non-descript effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); diff --git a/_haks/poa_exp_spells/sp_forceblast.ncs b/_haks/poa_exp_spells/sp_forceblast.ncs index 7225b584..8372717c 100644 Binary files a/_haks/poa_exp_spells/sp_forceblast.ncs and b/_haks/poa_exp_spells/sp_forceblast.ncs differ diff --git a/_haks/poa_exp_spells/sp_forceorb.ncs b/_haks/poa_exp_spells/sp_forceorb.ncs index 9c6582e4..dcde200a 100644 Binary files a/_haks/poa_exp_spells/sp_forceorb.ncs and b/_haks/poa_exp_spells/sp_forceorb.ncs differ diff --git a/_haks/poa_exp_spells/sp_forceorb.nss b/_haks/poa_exp_spells/sp_forceorb.nss index 856e84a1..0ca63caf 100644 --- a/_haks/poa_exp_spells/sp_forceorb.nss +++ b/_haks/poa_exp_spells/sp_forceorb.nss @@ -30,6 +30,7 @@ void main() //Roll damage for each target int nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_MAGICAL, nDice, 6); + nDamage += SpellDamagePerDice(oCaster, nDice); // Succeeded on the save if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oCaster))) nDamage = nDamage/2; @@ -56,6 +57,7 @@ void main() if (!PRCDoResistSpell(oCaster, oTarget, nCasterLvl, fDelay)) { int nDamage = nDice * 2; + nDamage += SpellDamagePerDice(oCaster, nDice); nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget, oCaster)), SAVING_THROW_TYPE_SPELL); if(nDamage > 0) { diff --git a/_haks/poa_exp_spells/sp_gfireburst.ncs b/_haks/poa_exp_spells/sp_gfireburst.ncs index 4381df44..6dfdca4b 100644 Binary files a/_haks/poa_exp_spells/sp_gfireburst.ncs and b/_haks/poa_exp_spells/sp_gfireburst.ncs differ diff --git a/_haks/poa_exp_spells/sp_gheroism.ncs b/_haks/poa_exp_spells/sp_gheroism.ncs index 086f0fdc..28e24d79 100644 Binary files a/_haks/poa_exp_spells/sp_gheroism.ncs and b/_haks/poa_exp_spells/sp_gheroism.ncs differ diff --git a/_haks/poa_exp_spells/sp_gutwrench.ncs b/_haks/poa_exp_spells/sp_gutwrench.ncs index 6790597c..b1a7f821 100644 Binary files a/_haks/poa_exp_spells/sp_gutwrench.ncs and b/_haks/poa_exp_spells/sp_gutwrench.ncs differ diff --git a/_haks/poa_exp_spells/sp_gutwrench.nss b/_haks/poa_exp_spells/sp_gutwrench.nss index 3f360357..9d95e31b 100644 --- a/_haks/poa_exp_spells/sp_gutwrench.nss +++ b/_haks/poa_exp_spells/sp_gutwrench.nss @@ -97,7 +97,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, 10); //define damage effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); diff --git a/_haks/poa_exp_spells/sp_hailofstone.ncs b/_haks/poa_exp_spells/sp_hailofstone.ncs index 2ce6026e..c83e502d 100644 Binary files a/_haks/poa_exp_spells/sp_hailofstone.ncs and b/_haks/poa_exp_spells/sp_hailofstone.ncs differ diff --git a/_haks/poa_exp_spells/sp_hailofstone.nss b/_haks/poa_exp_spells/sp_hailofstone.nss index ae95ec97..55169e47 100644 --- a/_haks/poa_exp_spells/sp_hailofstone.nss +++ b/_haks/poa_exp_spells/sp_hailofstone.nss @@ -47,7 +47,7 @@ void main() int nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_BLUDGEONING, 1 == nTouchAttack ? nDice : (nDice * 2), 4); - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nDice); // Apply the damage and the damage visible effect to the target. SPApplyEffectToObject(DURATION_TYPE_INSTANT, diff --git a/_haks/poa_exp_spells/sp_hellfire.ncs b/_haks/poa_exp_spells/sp_hellfire.ncs index 46b5c9c3..20571673 100644 Binary files a/_haks/poa_exp_spells/sp_hellfire.ncs and b/_haks/poa_exp_spells/sp_hellfire.ncs differ diff --git a/_haks/poa_exp_spells/sp_hellfire.nss b/_haks/poa_exp_spells/sp_hellfire.nss index e37ab87d..cd450b19 100644 --- a/_haks/poa_exp_spells/sp_hellfire.nss +++ b/_haks/poa_exp_spells/sp_hellfire.nss @@ -70,7 +70,7 @@ void main() { nDamage = nDamage + nDamage / 2; } - + nDamage += SpellDamagePerDice(oPC, 3); //Set the damage effect eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); diff --git a/_haks/poa_exp_spells/sp_heroism.ncs b/_haks/poa_exp_spells/sp_heroism.ncs index 576e1d72..e1af96a9 100644 Binary files a/_haks/poa_exp_spells/sp_heroism.ncs and b/_haks/poa_exp_spells/sp_heroism.ncs differ diff --git a/_haks/poa_exp_spells/sp_hf_storm.ncs b/_haks/poa_exp_spells/sp_hf_storm.ncs index 471d48e4..e2c15d86 100644 Binary files a/_haks/poa_exp_spells/sp_hf_storm.ncs and b/_haks/poa_exp_spells/sp_hf_storm.ncs differ diff --git a/_haks/poa_exp_spells/sp_hf_storm.nss b/_haks/poa_exp_spells/sp_hf_storm.nss index 2d903a4c..ff1013ed 100644 --- a/_haks/poa_exp_spells/sp_hf_storm.nss +++ b/_haks/poa_exp_spells/sp_hf_storm.nss @@ -66,7 +66,7 @@ void main() { nDamage = nDamage + nDamage / 2; } - + nDamage += SpellDamagePerDice(oPC, 5); //Set the damage effect eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE); if(nDamage > 0) diff --git a/_haks/poa_exp_spells/sp_ice_knife.ncs b/_haks/poa_exp_spells/sp_ice_knife.ncs index da6b0c62..1fbaf2ce 100644 Binary files a/_haks/poa_exp_spells/sp_ice_knife.ncs and b/_haks/poa_exp_spells/sp_ice_knife.ncs differ diff --git a/_haks/poa_exp_spells/sp_ice_knife.nss b/_haks/poa_exp_spells/sp_ice_knife.nss index 48fa67b9..5d90e267 100644 --- a/_haks/poa_exp_spells/sp_ice_knife.nss +++ b/_haks/poa_exp_spells/sp_ice_knife.nss @@ -74,7 +74,7 @@ void main() nDam = 8*(nCasterLvl/4)+2; if (nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - + nDam += SpellDamagePerDice(oCaster, 2); //if failed, ability damage if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_COLD)) { @@ -112,7 +112,7 @@ void main() nDam = 8*(nCasterLvl/4)+1; if (nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - + nDam += SpellDamagePerDice(oCaster, 1); nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nDC, SAVING_THROW_TYPE_COLD); if(nDam > 0) diff --git a/_haks/poa_exp_spells/sp_iceburst.ncs b/_haks/poa_exp_spells/sp_iceburst.ncs index 7b60a85c..59f869a4 100644 Binary files a/_haks/poa_exp_spells/sp_iceburst.ncs and b/_haks/poa_exp_spells/sp_iceburst.ncs differ diff --git a/_haks/poa_exp_spells/sp_impmagearm.ncs b/_haks/poa_exp_spells/sp_impmagearm.ncs index 7c85f6f1..734a2a4e 100644 Binary files a/_haks/poa_exp_spells/sp_impmagearm.ncs and b/_haks/poa_exp_spells/sp_impmagearm.ncs differ diff --git a/_haks/poa_exp_spells/sp_kelgore_fb.ncs b/_haks/poa_exp_spells/sp_kelgore_fb.ncs index 1f7488ff..7a40b4da 100644 Binary files a/_haks/poa_exp_spells/sp_kelgore_fb.ncs and b/_haks/poa_exp_spells/sp_kelgore_fb.ncs differ diff --git a/_haks/poa_exp_spells/sp_kelgore_fb.nss b/_haks/poa_exp_spells/sp_kelgore_fb.nss index 9a6a2e05..f587761e 100644 --- a/_haks/poa_exp_spells/sp_kelgore_fb.nss +++ b/_haks/poa_exp_spells/sp_kelgore_fb.nss @@ -57,10 +57,11 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, nMax); if(PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) { nDam = d6(1); + nDam += SpellDamagePerDice(oPC, 1); eVis = EffectVisualEffect(VFX_IMP_FLAME_S); } diff --git a/_haks/poa_exp_spells/sp_lahms_fd.ncs b/_haks/poa_exp_spells/sp_lahms_fd.ncs index 01683b75..d2ea6d1d 100644 Binary files a/_haks/poa_exp_spells/sp_lahms_fd.ncs and b/_haks/poa_exp_spells/sp_lahms_fd.ncs differ diff --git a/_haks/poa_exp_spells/sp_lconvict.ncs b/_haks/poa_exp_spells/sp_lconvict.ncs index e1805d84..c98175dc 100644 Binary files a/_haks/poa_exp_spells/sp_lconvict.ncs and b/_haks/poa_exp_spells/sp_lconvict.ncs differ diff --git a/_haks/poa_exp_spells/sp_lcurimpbl.ncs b/_haks/poa_exp_spells/sp_lcurimpbl.ncs index 6385690e..edd38e9d 100644 Binary files a/_haks/poa_exp_spells/sp_lcurimpbl.ncs and b/_haks/poa_exp_spells/sp_lcurimpbl.ncs differ diff --git a/_haks/poa_exp_spells/sp_lcurpfail.ncs b/_haks/poa_exp_spells/sp_lcurpfail.ncs index 1e433294..621f65a5 100644 Binary files a/_haks/poa_exp_spells/sp_lcurpfail.ncs and b/_haks/poa_exp_spells/sp_lcurpfail.ncs differ diff --git a/_haks/poa_exp_spells/sp_leonl_roar.ncs b/_haks/poa_exp_spells/sp_leonl_roar.ncs index 5253eda0..9c58dfd4 100644 Binary files a/_haks/poa_exp_spells/sp_leonl_roar.ncs and b/_haks/poa_exp_spells/sp_leonl_roar.ncs differ diff --git a/_haks/poa_exp_spells/sp_leonl_roar.nss b/_haks/poa_exp_spells/sp_leonl_roar.nss index 0728d1e9..58cb2247 100644 --- a/_haks/poa_exp_spells/sp_leonl_roar.nss +++ b/_haks/poa_exp_spells/sp_leonl_roar.nss @@ -62,7 +62,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, 2); SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_SONIC), oTarget); } } diff --git a/_haks/poa_exp_spells/sp_lowersr.ncs b/_haks/poa_exp_spells/sp_lowersr.ncs index a0c06222..2f3ccf9a 100644 Binary files a/_haks/poa_exp_spells/sp_lowersr.ncs and b/_haks/poa_exp_spells/sp_lowersr.ncs differ diff --git a/_haks/poa_exp_spells/sp_lshlfat.ncs b/_haks/poa_exp_spells/sp_lshlfat.ncs index d071a122..0969b137 100644 Binary files a/_haks/poa_exp_spells/sp_lshlfat.ncs and b/_haks/poa_exp_spells/sp_lshlfat.ncs differ diff --git a/_haks/poa_exp_spells/sp_mass_frshld.ncs b/_haks/poa_exp_spells/sp_mass_frshld.ncs index 44444363..20fba497 100644 Binary files a/_haks/poa_exp_spells/sp_mass_frshld.ncs and b/_haks/poa_exp_spells/sp_mass_frshld.ncs differ diff --git a/_haks/poa_exp_spells/sp_nec_bloat.ncs b/_haks/poa_exp_spells/sp_nec_bloat.ncs index 971a959e..d7da0885 100644 Binary files a/_haks/poa_exp_spells/sp_nec_bloat.ncs and b/_haks/poa_exp_spells/sp_nec_bloat.ncs differ diff --git a/_haks/poa_exp_spells/sp_nec_bloat.nss b/_haks/poa_exp_spells/sp_nec_bloat.nss index f982c574..9bdf3c69 100644 --- a/_haks/poa_exp_spells/sp_nec_bloat.nss +++ b/_haks/poa_exp_spells/sp_nec_bloat.nss @@ -81,7 +81,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, nLevel); int nVile = nDam/2; int nNorm = (nDam - nVile); diff --git a/_haks/poa_exp_spells/sp_nec_burst.ncs b/_haks/poa_exp_spells/sp_nec_burst.ncs index c48cf275..ca0db293 100644 Binary files a/_haks/poa_exp_spells/sp_nec_burst.ncs and b/_haks/poa_exp_spells/sp_nec_burst.ncs differ diff --git a/_haks/poa_exp_spells/sp_nec_burst.nss b/_haks/poa_exp_spells/sp_nec_burst.nss index 3e6c1d22..96df756a 100644 --- a/_haks/poa_exp_spells/sp_nec_burst.nss +++ b/_haks/poa_exp_spells/sp_nec_burst.nss @@ -90,7 +90,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, nLevel); int nVile = nDam/2; int nNorm = (nDam - nVile); //Vile damage is currently being applied as Positive damage diff --git a/_haks/poa_exp_spells/sp_nec_erupt.ncs b/_haks/poa_exp_spells/sp_nec_erupt.ncs index 8afa4551..6e879a58 100644 Binary files a/_haks/poa_exp_spells/sp_nec_erupt.ncs and b/_haks/poa_exp_spells/sp_nec_erupt.ncs differ diff --git a/_haks/poa_exp_spells/sp_nec_erupt.nss b/_haks/poa_exp_spells/sp_nec_erupt.nss index d18df174..2c52b2e2 100644 --- a/_haks/poa_exp_spells/sp_nec_erupt.nss +++ b/_haks/poa_exp_spells/sp_nec_erupt.nss @@ -93,7 +93,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, nLevel); int nVile = nDam/2; int nNorm = (nDam - nVile); //Vile damage is currently being applied as Positive damage @@ -123,6 +123,7 @@ void main() while (GetIsObjectValid(oTarget)) { int nDam = d6(nLevel); + nDam += SpellDamagePerDice(oPC, nLevel); int nVile = nDam/2; int nNorm = (nDam - nVile); //Vile damage is currently being applied as Positive damage diff --git a/_haks/poa_exp_spells/sp_nec_term.ncs b/_haks/poa_exp_spells/sp_nec_term.ncs index f2793d6d..6637dba3 100644 Binary files a/_haks/poa_exp_spells/sp_nec_term.ncs and b/_haks/poa_exp_spells/sp_nec_term.ncs differ diff --git a/_haks/poa_exp_spells/sp_nec_term.nss b/_haks/poa_exp_spells/sp_nec_term.nss index f0a0be6d..d8ecb359 100644 --- a/_haks/poa_exp_spells/sp_nec_term.nss +++ b/_haks/poa_exp_spells/sp_nec_term.nss @@ -107,7 +107,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, nLevel); int nVile = nDam/2; int nNorm = (nDam - nVile); //Vile damage is currently being applied as Positive damage diff --git a/_haks/poa_exp_spells/sp_nght_caress.ncs b/_haks/poa_exp_spells/sp_nght_caress.ncs index 7b52c442..90614410 100644 Binary files a/_haks/poa_exp_spells/sp_nght_caress.ncs and b/_haks/poa_exp_spells/sp_nght_caress.ncs differ diff --git a/_haks/poa_exp_spells/sp_nght_caress.nss b/_haks/poa_exp_spells/sp_nght_caress.nss index 23b4dc2c..a5c11058 100644 --- a/_haks/poa_exp_spells/sp_nght_caress.nss +++ b/_haks/poa_exp_spells/sp_nght_caress.nss @@ -71,7 +71,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) if (nMetaMagic & METAMAGIC_MAXIMIZE) nDam = 6 * nCasterLevel; //Metmagic: Empower if (nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - nDam += ApplySpellBetrayalStrikeDamage(oTarget, oCaster); + nDam += SpellDamagePerDice(oCaster, nCasterLevel); //Apply damage as magical ApplyTouchAttackDamage(oCaster, oTarget, nTouch, nDam, DAMAGE_TYPE_MAGICAL); diff --git a/_haks/poa_exp_spells/sp_ot_frz_sphere.ncs b/_haks/poa_exp_spells/sp_ot_frz_sphere.ncs index 7279d7b2..49d05da6 100644 Binary files a/_haks/poa_exp_spells/sp_ot_frz_sphere.ncs and b/_haks/poa_exp_spells/sp_ot_frz_sphere.ncs differ diff --git a/_haks/poa_exp_spells/sp_ot_frz_sphere.nss b/_haks/poa_exp_spells/sp_ot_frz_sphere.nss index 1072eab1..5339885e 100644 --- a/_haks/poa_exp_spells/sp_ot_frz_sphere.nss +++ b/_haks/poa_exp_spells/sp_ot_frz_sphere.nss @@ -90,7 +90,7 @@ void main() nDam = bIsElemental ? 8 * nDice : 6 * nDice; if(nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - + nDam += SpellDamagePerDice(oPC, nDice); nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nDC, SAVING_THROW_TYPE_COLD); // Need to do damage to apply visuals diff --git a/_haks/poa_exp_spells/sp_panacea.ncs b/_haks/poa_exp_spells/sp_panacea.ncs index 8b56f6e5..11dd43d2 100644 Binary files a/_haks/poa_exp_spells/sp_panacea.ncs and b/_haks/poa_exp_spells/sp_panacea.ncs differ diff --git a/_haks/poa_exp_spells/sp_panacea.nss b/_haks/poa_exp_spells/sp_panacea.nss index 20ab55aa..f82f6555 100644 --- a/_haks/poa_exp_spells/sp_panacea.nss +++ b/_haks/poa_exp_spells/sp_panacea.nss @@ -82,6 +82,7 @@ void main() // 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); + nDamage += SpellDamagePerDice(OBJECT_SELF, 1); if (PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget,OBJECT_SELF))) { nDamage /= 2; diff --git a/_haks/poa_exp_spells/sp_phoenix_fire.ncs b/_haks/poa_exp_spells/sp_phoenix_fire.ncs index 29da3f19..17a17277 100644 Binary files a/_haks/poa_exp_spells/sp_phoenix_fire.ncs and b/_haks/poa_exp_spells/sp_phoenix_fire.ncs differ diff --git a/_haks/poa_exp_spells/sp_phoenix_fire.nss b/_haks/poa_exp_spells/sp_phoenix_fire.nss index 55332e76..adb6ccfe 100644 --- a/_haks/poa_exp_spells/sp_phoenix_fire.nss +++ b/_haks/poa_exp_spells/sp_phoenix_fire.nss @@ -106,7 +106,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, PRCMin(40, (2 * nCasterLvl))); //Reflex save for 1/2 damage if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_GOOD)) { @@ -137,7 +137,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, PRCMin(20, nCasterLvl)); //Reflex for further 1/2 if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_GOOD)) { diff --git a/_haks/poa_exp_spells/sp_pnp_frshld.ncs b/_haks/poa_exp_spells/sp_pnp_frshld.ncs index 59a68103..e4b7bf8a 100644 Binary files a/_haks/poa_exp_spells/sp_pnp_frshld.ncs and b/_haks/poa_exp_spells/sp_pnp_frshld.ncs differ diff --git a/_haks/poa_exp_spells/sp_polar_ray.ncs b/_haks/poa_exp_spells/sp_polar_ray.ncs index 56459565..1aab1350 100644 Binary files a/_haks/poa_exp_spells/sp_polar_ray.ncs and b/_haks/poa_exp_spells/sp_polar_ray.ncs differ diff --git a/_haks/poa_exp_spells/sp_polar_ray.nss b/_haks/poa_exp_spells/sp_polar_ray.nss index 34037aca..5d16dc3b 100644 --- a/_haks/poa_exp_spells/sp_polar_ray.nss +++ b/_haks/poa_exp_spells/sp_polar_ray.nss @@ -58,7 +58,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) if(iAttackRoll > 0) { //Make SR Check - if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nPenetr)) + if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) { //Enter Metamagic conditions if (CheckMetaMagic(nMetaMagic, METAMAGIC_MAXIMIZE)) @@ -71,7 +71,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) { nDam = nDam + nDam/2; //Damage/Healing is +50% } - + nDam += SpellDamagePerDice(oCaster, nCasterLevel); // 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); diff --git a/_haks/poa_exp_spells/sp_prism_wallA.ncs b/_haks/poa_exp_spells/sp_prism_wallA.ncs index e4e2b1c3..d2ecba77 100644 Binary files a/_haks/poa_exp_spells/sp_prism_wallA.ncs and b/_haks/poa_exp_spells/sp_prism_wallA.ncs differ diff --git a/_haks/poa_exp_spells/sp_prism_wallA.nss b/_haks/poa_exp_spells/sp_prism_wallA.nss index 4464119e..2535bccc 100644 --- a/_haks/poa_exp_spells/sp_prism_wallA.nss +++ b/_haks/poa_exp_spells/sp_prism_wallA.nss @@ -159,55 +159,75 @@ void main() { 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); + // makes the target invisible + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget, 6.0); + // allows pathfinding through the target + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneGhost(), oTarget, 6.0); + // paralyzes the target, ignores immunity + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0); + // save the target location for later visual effect + location lLoc = GetLocation(oTarget); - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) + // separate player targets from NPCs + if(GetIsPC(oTarget)) { - case 1: - { - nTalk = 1729332; - break; - } + int nMessageRoll = d6(1); + int nTalk; - case 2: + switch(nMessageRoll) { - nTalk = 1729333; - break; - } + case 1: + { + nTalk = 1729332; + break; + } - case 3: - { - nTalk = 1729334; - break; - } + case 2: + { + nTalk = 1729333; + break; + } - case 4: - { - nTalk = 1729335; - break; - } + case 3: + { + nTalk = 1729334; + break; + } - case 5: - { - nTalk = 1729336; - break; - } + case 4: + { + nTalk = 1729335; + break; + } - case 6: - { - nTalk = 1729337; - break; + case 5: + { + nTalk = 1729336; + break; + } + + case 6: + { + nTalk = 1729337; + break; + } } + //Death Popup + // allow respawn, but not wait for help since sent away + // also if not letting respawn and cannot reload, the player cannot continue via GUI + DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, TRUE , FALSE, nTalk)); + DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); } - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); + else + { + // Target is not a player + // To simplify against NPCs and also reward xp, applies same death as Green color + DeathlessFrenzyCheck(oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); + } + // a visual effect for banishment + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc); } } } -} \ 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 index 76183077..208b3c7d 100644 Binary files a/_haks/poa_exp_spells/sp_prismat_ray.ncs and b/_haks/poa_exp_spells/sp_prismat_ray.ncs differ diff --git a/_haks/poa_exp_spells/sp_prismat_ray.nss b/_haks/poa_exp_spells/sp_prismat_ray.nss index f43264bf..d62cb4d2 100644 --- a/_haks/poa_exp_spells/sp_prismat_ray.nss +++ b/_haks/poa_exp_spells/sp_prismat_ray.nss @@ -216,56 +216,75 @@ void DoRay(object oTarget, int nSaveDC, int nRoll, int nCasterLvl, object oPC) { 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); + // makes the target invisible + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget, 6.0); + // allows pathfinding through the target + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneGhost(), oTarget, 6.0); + // paralyzes the target, ignores immunity + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0); + // save the target location for later visual effect + location lLoc = GetLocation(oTarget); - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) + // separate player targets from NPCs + if(GetIsPC(oTarget)) { - case 1: - { - nTalk = 1729332; - break; - } + int nMessageRoll = d6(1); + int nTalk; - case 2: + switch(nMessageRoll) { - nTalk = 1729333; - break; - } + case 1: + { + nTalk = 1729332; + break; + } - case 3: - { - nTalk = 1729334; - break; - } + case 2: + { + nTalk = 1729333; + break; + } - case 4: - { - nTalk = 1729335; - break; - } + case 3: + { + nTalk = 1729334; + break; + } - case 5: - { - nTalk = 1729336; - break; - } + case 4: + { + nTalk = 1729335; + break; + } - case 6: - { - nTalk = 1729337; - break; + case 5: + { + nTalk = 1729336; + break; + } + + case 6: + { + nTalk = 1729337; + break; + } } + //Death Popup + // allow respawn, but not wait for help since sent away + // also if not letting respawn and cannot reload, the player cannot continue via GUI + DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, TRUE , FALSE, nTalk)); + DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); } - - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); + else + { + // Target is not a player + // To simplify against NPCs and also reward xp, applies same death as Green color + DeathlessFrenzyCheck(oTarget); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); + } + // a visual effect for banishment + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc); } } } -} \ 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 index d3272797..e97f2943 100644 Binary files a/_haks/poa_exp_spells/sp_prismt_sphrA.ncs and b/_haks/poa_exp_spells/sp_prismt_sphrA.ncs differ diff --git a/_haks/poa_exp_spells/sp_prismt_sphrA.nss b/_haks/poa_exp_spells/sp_prismt_sphrA.nss index 21745de7..971af286 100644 --- a/_haks/poa_exp_spells/sp_prismt_sphrA.nss +++ b/_haks/poa_exp_spells/sp_prismt_sphrA.nss @@ -143,73 +143,75 @@ void main() { 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); + // makes the target invisible + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget, 6.0); + // allows pathfinding through the target + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneGhost(), oTarget, 6.0); + // paralyzes the target, ignores immunity + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0); + // save the target location for later visual effect + location lLoc = GetLocation(oTarget); - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) + // separate player targets from NPCs + if(GetIsPC(oTarget)) { - case 1: - { - nTalk = 1729332; - break; - } + int nMessageRoll = d6(1); + int nTalk; - case 2: + switch(nMessageRoll) { - nTalk = 1729333; - break; - } + case 1: + { + nTalk = 1729332; + break; + } - case 3: - { - nTalk = 1729334; - break; - } + case 2: + { + nTalk = 1729333; + break; + } - case 4: - { - nTalk = 1729335; - break; - } + case 3: + { + nTalk = 1729334; + break; + } - case 5: - { - nTalk = 1729336; - break; - } + case 4: + { + nTalk = 1729335; + break; + } - case 6: - { - nTalk = 1729337; - break; + case 5: + { + nTalk = 1729336; + break; + } + + case 6: + { + nTalk = 1729337; + break; + } } + //Death Popup + // allow respawn, but not wait for help since sent away + // also if not letting respawn and cannot reload, the player cannot continue via GUI + DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, TRUE , FALSE, nTalk)); + DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); } - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); + else + { + // Target is not a player + // To simplify against NPCs and also reward xp, applies same death as Green color + DeathlessFrenzyCheck(oTarget); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); + } + // a visual effect for banishment + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc); } } } } - - - - - - - - - - - - - - - - - - diff --git a/_haks/poa_exp_spells/sp_prot_arrows.ncs b/_haks/poa_exp_spells/sp_prot_arrows.ncs index c700b388..a1f3175b 100644 Binary files a/_haks/poa_exp_spells/sp_prot_arrows.ncs and b/_haks/poa_exp_spells/sp_prot_arrows.ncs differ diff --git a/_haks/poa_exp_spells/sp_rain_btul.ncs b/_haks/poa_exp_spells/sp_rain_btul.ncs index fe94afec..11451dee 100644 Binary files a/_haks/poa_exp_spells/sp_rain_btul.ncs and b/_haks/poa_exp_spells/sp_rain_btul.ncs differ diff --git a/_haks/poa_exp_spells/sp_rain_btul.nss b/_haks/poa_exp_spells/sp_rain_btul.nss index 372db97b..97032f62 100644 --- a/_haks/poa_exp_spells/sp_rain_btul.nss +++ b/_haks/poa_exp_spells/sp_rain_btul.nss @@ -82,7 +82,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, 5); SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget); } } diff --git a/_haks/poa_exp_spells/sp_rain_ember.ncs b/_haks/poa_exp_spells/sp_rain_ember.ncs index c8ae9d23..fcf7c063 100644 Binary files a/_haks/poa_exp_spells/sp_rain_ember.ncs and b/_haks/poa_exp_spells/sp_rain_ember.ncs differ diff --git a/_haks/poa_exp_spells/sp_rain_ember.nss b/_haks/poa_exp_spells/sp_rain_ember.nss index ce0a1151..73d9ea9b 100644 --- a/_haks/poa_exp_spells/sp_rain_ember.nss +++ b/_haks/poa_exp_spells/sp_rain_ember.nss @@ -104,7 +104,7 @@ void EmberLoop(int nCounter, int nCasterLvl, int nMetaMagic, object oPC, locatio { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(OBJECT_SELF, 10); if (PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_GOOD)) { nDam = (nDam/2); diff --git a/_haks/poa_exp_spells/sp_rainbow_blast.ncs b/_haks/poa_exp_spells/sp_rainbow_blast.ncs index b067200d..f159534e 100644 Binary files a/_haks/poa_exp_spells/sp_rainbow_blast.ncs and b/_haks/poa_exp_spells/sp_rainbow_blast.ncs differ diff --git a/_haks/poa_exp_spells/sp_rainbow_blast.nss b/_haks/poa_exp_spells/sp_rainbow_blast.nss index d96dfdcb..28ff20bf 100644 --- a/_haks/poa_exp_spells/sp_rainbow_blast.nss +++ b/_haks/poa_exp_spells/sp_rainbow_blast.nss @@ -117,6 +117,7 @@ void main() // Roll fire damage nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_FIRE, 1, nDieSides); + nDamage += SpellDamagePerDice(oCaster, 1); // Adjust damage according to Reflex Save, Evasion or Improved Evasion nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, SAVING_THROW_TYPE_FIRE); if(nDamage > 0) @@ -129,6 +130,7 @@ void main() // Roll acid damage nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_ACID, 1, nDieSides); + nDamage += SpellDamagePerDice(oCaster, 1); // Adjust damage according to Reflex Save, Evasion or Improved Evasion nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, SAVING_THROW_TYPE_ACID); if(nDamage > 0) @@ -141,6 +143,7 @@ void main() // Roll cold damage nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_COLD, 1, nDieSides); + nDamage += SpellDamagePerDice(oCaster, 1); // Cold has a fort save for half if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_COLD)) { @@ -159,6 +162,7 @@ void main() // Roll electrical damage nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_ELECTRICAL, 1, nDieSides); + nDamage += SpellDamagePerDice(oCaster, 1); // Adjust damage according to Reflex Save, Evasion or Improved Evasion nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, SAVING_THROW_TYPE_ELECTRICITY); if(nDamage > 0) @@ -171,6 +175,7 @@ void main() // Roll sonic damage nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_SONIC, 1, nDieSides); + nDamage += SpellDamagePerDice(oCaster, 1); // Adjust damage according to Reflex Save, Evasion or Improved Evasion nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, SAVING_THROW_TYPE_SONIC); if(nDamage > 0) diff --git a/_haks/poa_exp_spells/sp_raptr_ruptr.ncs b/_haks/poa_exp_spells/sp_raptr_ruptr.ncs index 27c3b384..0d98910a 100644 Binary files a/_haks/poa_exp_spells/sp_raptr_ruptr.ncs and b/_haks/poa_exp_spells/sp_raptr_ruptr.ncs differ diff --git a/_haks/poa_exp_spells/sp_raptr_ruptr.nss b/_haks/poa_exp_spells/sp_raptr_ruptr.nss index 5c3241ed..f115640a 100644 --- a/_haks/poa_exp_spells/sp_raptr_ruptr.nss +++ b/_haks/poa_exp_spells/sp_raptr_ruptr.nss @@ -48,7 +48,7 @@ touched. #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 WoundLoop(object oTarget, object oCaster, int nDamage = 0); void main() @@ -140,7 +140,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent, string nDam = 6*(6+nPenetr); if(nMetaMagic & METAMAGIC_EMPOWER) nDam += nDam / 2; - + nDam += SpellDamagePerDice(oCaster, 6); // Save for half damage if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_EVIL)) { @@ -154,7 +154,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent, string 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 + WoundLoop(oTarget, oCaster); // Init the wound loop. This will deal d6 damage, which in turn determines whether the target will be stunned again next round } // Apply Damage @@ -174,7 +174,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent, string return iAttackRoll; } -void WoundLoop(object oTarget, int nDamage = 0) +void WoundLoop(object oTarget, object oCaster, int nDamage = 0) { // If previous round's damage roll was 6, stun this round if(nDamage == 6) @@ -182,7 +182,8 @@ void WoundLoop(object oTarget, int nDamage = 0) // Roll and apply new damage nDamage = d6(); + nDamage += SpellDamagePerDice(oCaster, 1); SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL), oTarget); - DelayCommand(6.0f, WoundLoop(oTarget, nDamage)); + DelayCommand(6.0f, WoundLoop(oTarget, oCaster, nDamage)); } diff --git a/_haks/poa_exp_spells/sp_right_smt.ncs b/_haks/poa_exp_spells/sp_right_smt.ncs index 03b8b6cd..06423cf7 100644 Binary files a/_haks/poa_exp_spells/sp_right_smt.ncs and b/_haks/poa_exp_spells/sp_right_smt.ncs differ diff --git a/_haks/poa_exp_spells/sp_right_smt.nss b/_haks/poa_exp_spells/sp_right_smt.nss index bf67fd2c..829e1b64 100644 --- a/_haks/poa_exp_spells/sp_right_smt.nss +++ b/_haks/poa_exp_spells/sp_right_smt.nss @@ -85,7 +85,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, PRCMin(nCasterLvl, 20)); //Save for 1/2 if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) { diff --git a/_haks/poa_exp_spells/sp_rightmt.ncs b/_haks/poa_exp_spells/sp_rightmt.ncs index 7ed91201..6b8138e0 100644 Binary files a/_haks/poa_exp_spells/sp_rightmt.ncs and b/_haks/poa_exp_spells/sp_rightmt.ncs differ diff --git a/_haks/poa_exp_spells/sp_ring_bldsC.ncs b/_haks/poa_exp_spells/sp_ring_bldsC.ncs index 7078c163..61f09aa4 100644 Binary files a/_haks/poa_exp_spells/sp_ring_bldsC.ncs and b/_haks/poa_exp_spells/sp_ring_bldsC.ncs differ diff --git a/_haks/poa_exp_spells/sp_ring_bldsC.nss b/_haks/poa_exp_spells/sp_ring_bldsC.nss index 1aa8c7e7..51e7f3da 100644 --- a/_haks/poa_exp_spells/sp_ring_bldsC.nss +++ b/_haks/poa_exp_spells/sp_ring_bldsC.nss @@ -61,6 +61,7 @@ void main() if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oShadow)) { int nDamage = d6() + PRCMin(20, nCasterLvl); + nDamage += SpellDamagePerDice(oShadow, 1); ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, DAMAGE_TYPE_SLASHING, nDamage), oTarget); } //Select the next target within the spell shape. diff --git a/_haks/poa_exp_spells/sp_ring_bldsa.ncs b/_haks/poa_exp_spells/sp_ring_bldsa.ncs index 7529b91e..10a5aad2 100644 Binary files a/_haks/poa_exp_spells/sp_ring_bldsa.ncs and b/_haks/poa_exp_spells/sp_ring_bldsa.ncs differ diff --git a/_haks/poa_exp_spells/sp_ring_bldsa.nss b/_haks/poa_exp_spells/sp_ring_bldsa.nss index 6943e671..61567637 100644 --- a/_haks/poa_exp_spells/sp_ring_bldsa.nss +++ b/_haks/poa_exp_spells/sp_ring_bldsa.nss @@ -49,7 +49,7 @@ void main() int nCasterLvl = PRCGetCasterLevel(oPC); if(nCasterLvl > 20) nCasterLvl = 20; int nDam = d6(1) + nCasterLvl; - + nDam += SpellDamagePerDice(oPC, 1); if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oPC) && oTarget != oPC) { ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, DAMAGE_TYPE_SLASHING, nDam), oTarget); diff --git a/_haks/poa_exp_spells/sp_scorch_ray.ncs b/_haks/poa_exp_spells/sp_scorch_ray.ncs index 4b086935..3801d1a4 100644 Binary files a/_haks/poa_exp_spells/sp_scorch_ray.ncs and b/_haks/poa_exp_spells/sp_scorch_ray.ncs differ diff --git a/_haks/poa_exp_spells/sp_scorch_ray.nss b/_haks/poa_exp_spells/sp_scorch_ray.nss index 77ae5744..2c6ea9d8 100644 --- a/_haks/poa_exp_spells/sp_scorch_ray.nss +++ b/_haks/poa_exp_spells/sp_scorch_ray.nss @@ -101,7 +101,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oCaster, 4); ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDam, ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE)); } } diff --git a/_haks/poa_exp_spells/sp_seeking_ray.ncs b/_haks/poa_exp_spells/sp_seeking_ray.ncs index bd44d0b2..edfd65ca 100644 Binary files a/_haks/poa_exp_spells/sp_seeking_ray.ncs and b/_haks/poa_exp_spells/sp_seeking_ray.ncs differ diff --git a/_haks/poa_exp_spells/sp_seeking_ray.nss b/_haks/poa_exp_spells/sp_seeking_ray.nss index e7818faa..1880b1c7 100644 --- a/_haks/poa_exp_spells/sp_seeking_ray.nss +++ b/_haks/poa_exp_spells/sp_seeking_ray.nss @@ -77,7 +77,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oCaster, 4); if(nMetaMagic & METAMAGIC_EXTEND) { fDur += fDur; diff --git a/_haks/poa_exp_spells/sp_seeth_eyebn.ncs b/_haks/poa_exp_spells/sp_seeth_eyebn.ncs index f07f1902..d87942c2 100644 Binary files a/_haks/poa_exp_spells/sp_seeth_eyebn.ncs and b/_haks/poa_exp_spells/sp_seeth_eyebn.ncs differ diff --git a/_haks/poa_exp_spells/sp_seeth_eyebn.nss b/_haks/poa_exp_spells/sp_seeth_eyebn.nss index 8168a5d8..ab30a0a1 100644 --- a/_haks/poa_exp_spells/sp_seeth_eyebn.nss +++ b/_haks/poa_exp_spells/sp_seeth_eyebn.nss @@ -70,7 +70,8 @@ void main() // Acid Sheath adds +1 damage per die to acid descriptor spells if (GetHasDescriptor(GetSpellId(), DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, oPC)) - nDam += 1; + nDam += 1; + nDam += SpellDamagePerDice(oPC, 1); effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_ACID); //apply damage diff --git a/_haks/poa_exp_spells/sp_serp_sigh.ncs b/_haks/poa_exp_spells/sp_serp_sigh.ncs index 956dc0cc..4f9c7c56 100644 Binary files a/_haks/poa_exp_spells/sp_serp_sigh.ncs and b/_haks/poa_exp_spells/sp_serp_sigh.ncs differ diff --git a/_haks/poa_exp_spells/sp_shock_grasp.ncs b/_haks/poa_exp_spells/sp_shock_grasp.ncs index f454bd7e..d24a19e2 100644 Binary files a/_haks/poa_exp_spells/sp_shock_grasp.ncs and b/_haks/poa_exp_spells/sp_shock_grasp.ncs differ diff --git a/_haks/poa_exp_spells/sp_shock_grasp.nss b/_haks/poa_exp_spells/sp_shock_grasp.nss index 3be497d6..9e4dfbe8 100644 --- a/_haks/poa_exp_spells/sp_shock_grasp.nss +++ b/_haks/poa_exp_spells/sp_shock_grasp.nss @@ -72,7 +72,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) nDam = 6 * nDie; if(nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - + nDam += SpellDamagePerDice(oCaster, nDie); int eDamageType = ChangedElementalDamage(oCaster, DAMAGE_TYPE_ELECTRICAL); ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDam, eDamageType); PRCBonusDamage(oTarget); diff --git a/_haks/poa_exp_spells/sp_shout.ncs b/_haks/poa_exp_spells/sp_shout.ncs index 2d550c22..69ca5065 100644 Binary files a/_haks/poa_exp_spells/sp_shout.ncs and b/_haks/poa_exp_spells/sp_shout.ncs differ diff --git a/_haks/poa_exp_spells/sp_shout.nss b/_haks/poa_exp_spells/sp_shout.nss index 5b727ba5..4c72b9cb 100644 --- a/_haks/poa_exp_spells/sp_shout.nss +++ b/_haks/poa_exp_spells/sp_shout.nss @@ -97,7 +97,7 @@ void main() { nDamage += (nDamage/2); } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(OBJECT_SELF, nDamageDice); if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oCaster, nSpellID), SAVING_THROW_TYPE_SONIC)) diff --git a/_haks/poa_exp_spells/sp_shriveling.ncs b/_haks/poa_exp_spells/sp_shriveling.ncs index a99439e0..d5972924 100644 Binary files a/_haks/poa_exp_spells/sp_shriveling.ncs and b/_haks/poa_exp_spells/sp_shriveling.ncs differ diff --git a/_haks/poa_exp_spells/sp_shriveling.nss b/_haks/poa_exp_spells/sp_shriveling.nss index d7dfb913..89482c02 100644 --- a/_haks/poa_exp_spells/sp_shriveling.nss +++ b/_haks/poa_exp_spells/sp_shriveling.nss @@ -73,7 +73,7 @@ void main() { nDam = nDam/2; } - + nDam += SpellDamagePerDice(oPC, PRCMin(nCasterLvl, 10)); effect eVis = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_GREASE); //Apply damage & visual diff --git a/_haks/poa_exp_spells/sp_slash_displ.ncs b/_haks/poa_exp_spells/sp_slash_displ.ncs index 15882c52..c90fedc5 100644 Binary files a/_haks/poa_exp_spells/sp_slash_displ.ncs and b/_haks/poa_exp_spells/sp_slash_displ.ncs differ diff --git a/_haks/poa_exp_spells/sp_slashdark.ncs b/_haks/poa_exp_spells/sp_slashdark.ncs index 5985218e..cfedcc89 100644 Binary files a/_haks/poa_exp_spells/sp_slashdark.ncs and b/_haks/poa_exp_spells/sp_slashdark.ncs differ diff --git a/_haks/poa_exp_spells/sp_slashdark.nss b/_haks/poa_exp_spells/sp_slashdark.nss index f4d061d9..d77c762d 100644 --- a/_haks/poa_exp_spells/sp_slashdark.nss +++ b/_haks/poa_exp_spells/sp_slashdark.nss @@ -44,7 +44,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) if (!PRCDoResistSpell(OBJECT_SELF, oTarget, nPenetr)) { int nDamage = PRCGetMetaMagicDamage(nDamageType, 1 == iAttackRoll ? nDice : (nDice * 2), 8); - + nDamage += SpellDamagePerDice(oCaster, nDice); // Apply the damage and the vfx to the target. effect eEffect = PRCEffectDamage(oTarget, nDamage, nDamageType); diff --git a/_haks/poa_exp_spells/sp_snsnow.ncs b/_haks/poa_exp_spells/sp_snsnow.ncs index e1f0136a..694c4b4d 100644 Binary files a/_haks/poa_exp_spells/sp_snsnow.ncs and b/_haks/poa_exp_spells/sp_snsnow.ncs differ diff --git a/_haks/poa_exp_spells/sp_snsnow.nss b/_haks/poa_exp_spells/sp_snsnow.nss index 90326540..b22ab3a9 100644 --- a/_haks/poa_exp_spells/sp_snsnow.nss +++ b/_haks/poa_exp_spells/sp_snsnow.nss @@ -32,7 +32,7 @@ void main() // Roll the damage of (1d6+1) / level, doing double damage on a crit. int nDamage = PRCGetMetaMagicDamage(nDamageType, 1 == nTouchAttack ? nDice : (nDice * 2), 6, 1); - + nDamage += SpellDamagePerDice(OBJECT_SELF, nDice); // Apply the damage and the damage visible effect to the target. SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, nDamageType), oTarget); diff --git a/_haks/poa_exp_spells/sp_snsnowsw.ncs b/_haks/poa_exp_spells/sp_snsnowsw.ncs index 39fce242..a062fc7b 100644 Binary files a/_haks/poa_exp_spells/sp_snsnowsw.ncs and b/_haks/poa_exp_spells/sp_snsnowsw.ncs differ diff --git a/_haks/poa_exp_spells/sp_spiderskin.ncs b/_haks/poa_exp_spells/sp_spiderskin.ncs index 48462043..bedebbcc 100644 Binary files a/_haks/poa_exp_spells/sp_spiderskin.ncs and b/_haks/poa_exp_spells/sp_spiderskin.ncs differ diff --git a/_haks/poa_exp_spells/sp_stalagmite.ncs b/_haks/poa_exp_spells/sp_stalagmite.ncs index adf13186..40fe5c99 100644 Binary files a/_haks/poa_exp_spells/sp_stalagmite.ncs and b/_haks/poa_exp_spells/sp_stalagmite.ncs differ diff --git a/_haks/poa_exp_spells/sp_stalagmite.nss b/_haks/poa_exp_spells/sp_stalagmite.nss index c846bd4f..454bc05e 100644 --- a/_haks/poa_exp_spells/sp_stalagmite.nss +++ b/_haks/poa_exp_spells/sp_stalagmite.nss @@ -69,6 +69,7 @@ void main() nDam = d6(nDice); if ((nMetaMagic & METAMAGIC_EMPOWER)) nDam += nDam / 2; + nDam += SpellDamagePerDice(oCaster, nDice); int nCheck = nDam; nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nSaveDC, SAVING_THROW_TYPE_SPELL); SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_PIERCING), oTarget); diff --git a/_haks/poa_exp_spells/sp_strm_shard.ncs b/_haks/poa_exp_spells/sp_strm_shard.ncs index e842546a..7d9f38ae 100644 Binary files a/_haks/poa_exp_spells/sp_strm_shard.ncs and b/_haks/poa_exp_spells/sp_strm_shard.ncs differ diff --git a/_haks/poa_exp_spells/sp_strm_shard.nss b/_haks/poa_exp_spells/sp_strm_shard.nss index ea767c39..d5ece1a0 100644 --- a/_haks/poa_exp_spells/sp_strm_shard.nss +++ b/_haks/poa_exp_spells/sp_strm_shard.nss @@ -78,7 +78,7 @@ void main() { nDam = nDam/2; } - + nDam += SpellDamagePerDice(oPC, PRCMin(nCasterLvl, 20)); SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_DIVINE), oTarget); } } diff --git a/_haks/poa_exp_spells/sp_sunmantle.ncs b/_haks/poa_exp_spells/sp_sunmantle.ncs index 95aefdef..9ef819a7 100644 Binary files a/_haks/poa_exp_spells/sp_sunmantle.ncs and b/_haks/poa_exp_spells/sp_sunmantle.ncs differ diff --git a/_haks/poa_exp_spells/sp_thous_ndls.ncs b/_haks/poa_exp_spells/sp_thous_ndls.ncs index c9c18eab..7b960406 100644 Binary files a/_haks/poa_exp_spells/sp_thous_ndls.ncs and b/_haks/poa_exp_spells/sp_thous_ndls.ncs differ diff --git a/_haks/poa_exp_spells/sp_thous_ndls.nss b/_haks/poa_exp_spells/sp_thous_ndls.nss index 52dab0e4..d1b7ad13 100644 --- a/_haks/poa_exp_spells/sp_thous_ndls.nss +++ b/_haks/poa_exp_spells/sp_thous_ndls.nss @@ -69,7 +69,7 @@ void main() { nDam += (nDam/2); } - + nDam += SpellDamagePerDice(oPC, 2); SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); //Save diff --git a/_haks/poa_exp_spells/sp_touch_fatigue.ncs b/_haks/poa_exp_spells/sp_touch_fatigue.ncs index bde00259..24d40061 100644 Binary files a/_haks/poa_exp_spells/sp_touch_fatigue.ncs and b/_haks/poa_exp_spells/sp_touch_fatigue.ncs differ diff --git a/_haks/poa_exp_spells/sp_unliv_weap.ncs b/_haks/poa_exp_spells/sp_unliv_weap.ncs index 1d9b8657..c9640658 100644 Binary files a/_haks/poa_exp_spells/sp_unliv_weap.ncs and b/_haks/poa_exp_spells/sp_unliv_weap.ncs differ diff --git a/_haks/poa_exp_spells/sp_unliv_weap.nss b/_haks/poa_exp_spells/sp_unliv_weap.nss index 0b0ee002..57dfd084 100644 --- a/_haks/poa_exp_spells/sp_unliv_weap.nss +++ b/_haks/poa_exp_spells/sp_unliv_weap.nss @@ -37,7 +37,7 @@ Created: 5/11/06 //::////////////////////////////////////////////// //::////////////////////////////////////////////// -void HiImABomb(object oTarget, int nCounter, int nHP, int nCasterLvl, int nMetaMagic); +void HiImABomb(object oTarget, int nCounter, int nHP, int nCasterLvl, int nMetaMagic, object oCaster); #include "prc_inc_spells" #include "prc_add_spell_dc" @@ -67,13 +67,13 @@ void main() int nCounter = (FloatToInt(fDur))/3; int nHP = GetCurrentHitPoints(oTarget); - HiImABomb(oTarget, nCounter, nHP, nCasterLvl, nMetaMagic); + HiImABomb(oTarget, nCounter, nHP, nCasterLvl, nMetaMagic, oPC); } } PRCSetSchool(); } -void HiImABomb(object oTarget, int nCounter, int nHP, int nCasterLvl, int nMetaMagic) +void HiImABomb(object oTarget, int nCounter, int nHP, int nCasterLvl, int nMetaMagic, object oCaster) { if((nCounter < 1) || GetCurrentHitPoints(oTarget) < nHP) { @@ -94,7 +94,7 @@ void HiImABomb(object oTarget, int nCounter, int nHP, int nCasterLvl, int nMetaM nDam = 6 * nDice; if(nMetaMagic & METAMAGIC_EMPOWER) nDam += (nDam/2); - + nDam += SpellDamagePerDice(oCaster, nDice); //Apply damage SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oOuch); @@ -104,5 +104,5 @@ void HiImABomb(object oTarget, int nCounter, int nHP, int nCasterLvl, int nMetaM } nCounter--; - DelayCommand(3.0f, HiImABomb(oTarget, nCounter, nHP, nCasterLvl, nMetaMagic)); + DelayCommand(3.0f, HiImABomb(oTarget, nCounter, nHP, nCasterLvl, nMetaMagic, oCaster)); } \ No newline at end of file diff --git a/_haks/poa_exp_spells/sp_wallfrosta.ncs b/_haks/poa_exp_spells/sp_wallfrosta.ncs index 22a36d99..2479e1e6 100644 Binary files a/_haks/poa_exp_spells/sp_wallfrosta.ncs and b/_haks/poa_exp_spells/sp_wallfrosta.ncs differ diff --git a/_haks/poa_exp_spells/sp_wallfrosta.nss b/_haks/poa_exp_spells/sp_wallfrosta.nss index 0c9f8d68..d54447ed 100644 --- a/_haks/poa_exp_spells/sp_wallfrosta.nss +++ b/_haks/poa_exp_spells/sp_wallfrosta.nss @@ -49,7 +49,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 4); nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget,GetAreaOfEffectCreator())), SAVING_THROW_TYPE_COLD); if(nDamage > 0) { diff --git a/_haks/poa_exp_spells/sp_wallfrostc.ncs b/_haks/poa_exp_spells/sp_wallfrostc.ncs index 099f019e..f22bff3f 100644 Binary files a/_haks/poa_exp_spells/sp_wallfrostc.ncs and b/_haks/poa_exp_spells/sp_wallfrostc.ncs differ diff --git a/_haks/poa_exp_spells/sp_wallfrostc.nss b/_haks/poa_exp_spells/sp_wallfrostc.nss index 42d2a546..eda1dbfe 100644 --- a/_haks/poa_exp_spells/sp_wallfrostc.nss +++ b/_haks/poa_exp_spells/sp_wallfrostc.nss @@ -67,7 +67,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } - //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); + nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 4); int nDC = PRCGetSaveDC(oTarget,GetAreaOfEffectCreator()); diff --git a/_haks/poa_exp_spells/sp_wrtch_blght.ncs b/_haks/poa_exp_spells/sp_wrtch_blght.ncs index b830e207..6fe4e3cf 100644 Binary files a/_haks/poa_exp_spells/sp_wrtch_blght.ncs and b/_haks/poa_exp_spells/sp_wrtch_blght.ncs differ diff --git a/_haks/poa_exp_spells/sp_wrtch_blght.nss b/_haks/poa_exp_spells/sp_wrtch_blght.nss index 45b66a81..f0abe0ee 100644 --- a/_haks/poa_exp_spells/sp_wrtch_blght.nss +++ b/_haks/poa_exp_spells/sp_wrtch_blght.nss @@ -78,7 +78,7 @@ void main() // 1/2 damage for neutral targets if(nAlign == ALIGNMENT_NEUTRAL) nDam = nDam/2; - + nDam += SpellDamagePerDice(oPC, nDice); nDC = PRCGetSaveDC(oTarget, oPC); //Save for 1/2 dam diff --git a/_haks/poa_exp_spells/x0_s0_acidsplash.ncs b/_haks/poa_exp_spells/x0_s0_acidsplash.ncs index 6c8d4f18..e88abb1c 100644 Binary files a/_haks/poa_exp_spells/x0_s0_acidsplash.ncs and b/_haks/poa_exp_spells/x0_s0_acidsplash.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_acidsplash.nss b/_haks/poa_exp_spells/x0_s0_acidsplash.nss index a1fab4b1..19a8c352 100644 --- a/_haks/poa_exp_spells/x0_s0_acidsplash.nss +++ b/_haks/poa_exp_spells/x0_s0_acidsplash.nss @@ -53,7 +53,7 @@ int nCasterLevel = PRCGetCasterLevel(oCaster); // 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; - + nDamage += SpellDamagePerDice(OBJECT_SELF, 1); //Apply the VFX impact and damage effect SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); diff --git a/_haks/poa_exp_spells/x0_s0_bigby2.ncs b/_haks/poa_exp_spells/x0_s0_bigby2.ncs index 50097149..f4752ad2 100644 Binary files a/_haks/poa_exp_spells/x0_s0_bigby2.ncs and b/_haks/poa_exp_spells/x0_s0_bigby2.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_bigby4.ncs b/_haks/poa_exp_spells/x0_s0_bigby4.ncs index e4fdd901..a17cc7a0 100644 Binary files a/_haks/poa_exp_spells/x0_s0_bigby4.ncs and b/_haks/poa_exp_spells/x0_s0_bigby4.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_bigby4.nss b/_haks/poa_exp_spells/x0_s0_bigby4.nss index 134361e4..cec00b0b 100644 --- a/_haks/poa_exp_spells/x0_s0_bigby4.nss +++ b/_haks/poa_exp_spells/x0_s0_bigby4.nss @@ -53,6 +53,7 @@ void RunHandImpact(object oTarget, object oCaster,int CasterLvl, int nAbilityMod int nDC = GetLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (nSpellID)); int nDam = PRCMaximizeOrEmpower(8, 1, PRCGetMetaMagicFeat(), 11+CasterLvl); + nDam += SpellDamagePerDice(oCaster, 1); //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_BLUDGEONING); effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); diff --git a/_haks/poa_exp_spells/x0_s0_bigby5.ncs b/_haks/poa_exp_spells/x0_s0_bigby5.ncs index 8f7b906d..b269fa52 100644 Binary files a/_haks/poa_exp_spells/x0_s0_bigby5.ncs and b/_haks/poa_exp_spells/x0_s0_bigby5.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_bigby5.nss b/_haks/poa_exp_spells/x0_s0_bigby5.nss index c19c447d..cdd69458 100644 --- a/_haks/poa_exp_spells/x0_s0_bigby5.nss +++ b/_haks/poa_exp_spells/x0_s0_bigby5.nss @@ -43,6 +43,7 @@ void RunHandImpact(object oTarget, object oCaster) } int CasterLvl = PRCGetCasterLevel(oCaster); int nDam = PRCMaximizeOrEmpower(6,2,PRCGetMetaMagicFeat(), 12+CasterLvl); + nDam += SpellDamagePerDice(oCaster, 2); //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_BLUDGEONING); effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); diff --git a/_haks/poa_exp_spells/x0_s0_bombard.ncs b/_haks/poa_exp_spells/x0_s0_bombard.ncs index a6139337..48fa139d 100644 Binary files a/_haks/poa_exp_spells/x0_s0_bombard.ncs and b/_haks/poa_exp_spells/x0_s0_bombard.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_bombard.nss b/_haks/poa_exp_spells/x0_s0_bombard.nss index 65238828..5caa03e3 100644 --- a/_haks/poa_exp_spells/x0_s0_bombard.nss +++ b/_haks/poa_exp_spells/x0_s0_bombard.nss @@ -90,6 +90,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); { nDamage = nDamage + nDamage / 2; } + nDamage += SpellDamagePerDice(oCaster, nCasterLvl); //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); diff --git a/_haks/poa_exp_spells/x0_s0_divfav.ncs b/_haks/poa_exp_spells/x0_s0_divfav.ncs index 11efe62d..d8278188 100644 Binary files a/_haks/poa_exp_spells/x0_s0_divfav.ncs and b/_haks/poa_exp_spells/x0_s0_divfav.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_earthquake.ncs b/_haks/poa_exp_spells/x0_s0_earthquake.ncs index 8cde1f86..2407c0fe 100644 Binary files a/_haks/poa_exp_spells/x0_s0_earthquake.ncs and b/_haks/poa_exp_spells/x0_s0_earthquake.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_earthquake.nss b/_haks/poa_exp_spells/x0_s0_earthquake.nss index 9bc68898..8050b03c 100644 --- a/_haks/poa_exp_spells/x0_s0_earthquake.nss +++ b/_haks/poa_exp_spells/x0_s0_earthquake.nss @@ -71,6 +71,7 @@ void DoQuake(object oCaster, int nCasterLvl, location lTarget) // Indoors, get hit by falling rubble for 8d6, reflex half if(bInside) { + nDamage = SpellDamagePerDice(oCaster, 8) + d6(8); 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); diff --git a/_haks/poa_exp_spells/x0_s0_elecjolt.ncs b/_haks/poa_exp_spells/x0_s0_elecjolt.ncs index b8a62d38..8752af21 100644 Binary files a/_haks/poa_exp_spells/x0_s0_elecjolt.ncs and b/_haks/poa_exp_spells/x0_s0_elecjolt.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_elecjolt.nss b/_haks/poa_exp_spells/x0_s0_elecjolt.nss index 14ba4bac..19c90697 100644 --- a/_haks/poa_exp_spells/x0_s0_elecjolt.nss +++ b/_haks/poa_exp_spells/x0_s0_elecjolt.nss @@ -50,7 +50,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel) if(!PRCDoResistSpell(oCaster, oTarget, nPenetr)) { int nDamage = PRCMaximizeOrEmpower(nPenetr, 1, nMetaMagic); //alterei o 3 por caster lvl+spell penetration - + nDamage += SpellDamagePerDice(oCaster, 1); //Apply the VFX impact and damage effect SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); diff --git a/_haks/poa_exp_spells/x0_s0_ether.ncs b/_haks/poa_exp_spells/x0_s0_ether.ncs index 6744a433..e1104d6d 100644 Binary files a/_haks/poa_exp_spells/x0_s0_ether.ncs and b/_haks/poa_exp_spells/x0_s0_ether.ncs 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 index 7e0a6345..6955e64c 100644 Binary files a/_haks/poa_exp_spells/x0_s0_firebrand.ncs and b/_haks/poa_exp_spells/x0_s0_firebrand.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_firebrand.nss b/_haks/poa_exp_spells/x0_s0_firebrand.nss index 19f2ebee..e7561432 100644 --- a/_haks/poa_exp_spells/x0_s0_firebrand.nss +++ b/_haks/poa_exp_spells/x0_s0_firebrand.nss @@ -4,6 +4,38 @@ //:: Copyright (c) 2002 Bioware Corp. //::////////////////////////////////////////////// /* + + Evocation [Fire] + Level: Sorcerer 5, Wizard 5, + Components: V, S, M, + Casting Time: 1 standard action + Range: Medium (100 ft. + 10 ft./level) + Area: One 5-ft.-radius burst/level (S) + Duration: Instantaneous + Saving Throw: Reflex half + Spell Resistance: Yes + + The flask of alchemist's fire vanishes from you hand and the + ground erupts beneath your foes, shooting multiple fountains + of fiery liquid upward. + + Each burst deals 1d6 points of damage per caster level + (maximum 10d6) to all creatures within the area. All + subjects hit by the burst in the round the spell is + cast or within the area in the following round take 1d6 + points of fire damage per two caster levels (maximum 5d6). + A character struck in the round the spell is cast can + attempt to extinguish the flames on itself as a + full-round action with a successful DC 15 Reflex + save. + + Burst effects that overlap do not deal additional + damage (a creature can be affected by only one burst). + + Material Component: A flask of alchemist's fire + (worth 20 gp). + + // * Fires a flame arrow to every target in a // * colossal area // * Each target explodes into a small fireball for @@ -192,6 +224,7 @@ void DoFirebrand(int CasterLvl,int nD6Dice, int nCap, int nSpell, int nMIRV = VF { nDam = nDam + nDam/2; //Damage/Healing is +50% } + nDam += SpellDamagePerDice(OBJECT_SELF, nD6Dice); if(i == 1) //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); fTime = fDelay; fDelay2 += 0.1; diff --git a/_haks/poa_exp_spells/x0_s0_flare.ncs b/_haks/poa_exp_spells/x0_s0_flare.ncs index 6cc3a7c8..7486779b 100644 Binary files a/_haks/poa_exp_spells/x0_s0_flare.ncs and b/_haks/poa_exp_spells/x0_s0_flare.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_gmagicfang.ncs b/_haks/poa_exp_spells/x0_s0_gmagicfang.ncs index 5868a401..a9410d5c 100644 Binary files a/_haks/poa_exp_spells/x0_s0_gmagicfang.ncs and b/_haks/poa_exp_spells/x0_s0_gmagicfang.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_inferno.ncs b/_haks/poa_exp_spells/x0_s0_inferno.ncs index 18457cd2..a5ca7657 100644 Binary files a/_haks/poa_exp_spells/x0_s0_inferno.ncs and b/_haks/poa_exp_spells/x0_s0_inferno.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_inferno.nss b/_haks/poa_exp_spells/x0_s0_inferno.nss index 52eb02bb..f20575ad 100644 --- a/_haks/poa_exp_spells/x0_s0_inferno.nss +++ b/_haks/poa_exp_spells/x0_s0_inferno.nss @@ -132,6 +132,7 @@ void RunImpact(object oTarget, object oCaster, int nMetaMagic,int EleDmg) // Calculate Damage //---------------------------------------------------------------------- int nDamage = PRCMaximizeOrEmpower(nPenetr/2,2,nMetaMagic); //troquei o 6 por nPenetr/2 + nDamage += SpellDamagePerDice(oCaster, 2); //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg); effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); diff --git a/_haks/poa_exp_spells/x0_s0_magicfang.ncs b/_haks/poa_exp_spells/x0_s0_magicfang.ncs index 98c9e822..37b0b951 100644 Binary files a/_haks/poa_exp_spells/x0_s0_magicfang.ncs and b/_haks/poa_exp_spells/x0_s0_magicfang.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_magicfang.nss b/_haks/poa_exp_spells/x0_s0_magicfang.nss index 13fae876..c58741bc 100644 --- a/_haks/poa_exp_spells/x0_s0_magicfang.nss +++ b/_haks/poa_exp_spells/x0_s0_magicfang.nss @@ -46,8 +46,8 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) int bNorm = (nSpellID == 452); int nPower = bNorm ? 1 : (nCasterLevel + 1) / 3; //magic fang - if (nPower > 20) - nPower = 20; // * max of +5 bonus + if (nPower > 10) + nPower = 10; // * max of +5 bonus int nDamagePower; switch (nPower) @@ -62,16 +62,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) 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)) diff --git a/_haks/poa_exp_spells/x0_s0_missstorm1.ncs b/_haks/poa_exp_spells/x0_s0_missstorm1.ncs index 214b0bdf..110c596a 100644 Binary files a/_haks/poa_exp_spells/x0_s0_missstorm1.ncs and b/_haks/poa_exp_spells/x0_s0_missstorm1.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_missstorm2.ncs b/_haks/poa_exp_spells/x0_s0_missstorm2.ncs index bd977e83..712a59ac 100644 Binary files a/_haks/poa_exp_spells/x0_s0_missstorm2.ncs and b/_haks/poa_exp_spells/x0_s0_missstorm2.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_quillfire.ncs b/_haks/poa_exp_spells/x0_s0_quillfire.ncs index 09ca7bb0..57b5db65 100644 Binary files a/_haks/poa_exp_spells/x0_s0_quillfire.ncs and b/_haks/poa_exp_spells/x0_s0_quillfire.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_quillfire.nss b/_haks/poa_exp_spells/x0_s0_quillfire.nss index 6fd9d13d..5e0c70d6 100644 --- a/_haks/poa_exp_spells/x0_s0_quillfire.nss +++ b/_haks/poa_exp_spells/x0_s0_quillfire.nss @@ -79,6 +79,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION nBonus = 20; } nDam = nDam + nBonus; + nDam += SpellDamagePerDice(OBJECT_SELF, 1); //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL); SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); diff --git a/_haks/poa_exp_spells/x0_s0_shieldfait.ncs b/_haks/poa_exp_spells/x0_s0_shieldfait.ncs index d6037608..ccca1651 100644 Binary files a/_haks/poa_exp_spells/x0_s0_shieldfait.ncs and b/_haks/poa_exp_spells/x0_s0_shieldfait.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_spikegroen.ncs b/_haks/poa_exp_spells/x0_s0_spikegroen.ncs index 3e17a239..37244d1a 100644 Binary files a/_haks/poa_exp_spells/x0_s0_spikegroen.ncs and b/_haks/poa_exp_spells/x0_s0_spikegroen.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_spikegroen.nss b/_haks/poa_exp_spells/x0_s0_spikegroen.nss index 00b67392..7d707e76 100644 --- a/_haks/poa_exp_spells/x0_s0_spikegroen.nss +++ b/_haks/poa_exp_spells/x0_s0_spikegroen.nss @@ -43,12 +43,12 @@ void PRCDoSpikeGrowthEffect(object oTarget,int nPenetr) int nDam = PRCMaximizeOrEmpower(20, 1, nMetaMagic); //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - effect eDam = EffectDamage(nDam, DAMAGE_TYPE_PIERCING); + effect eDam = PRCEffectDamage(oTarget, 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam/*eLink*/, oTarget)); // * only apply a slow effect from this spell once if (GetHasSpellEffect(453, oTarget) == FALSE) @@ -57,7 +57,7 @@ void PRCDoSpikeGrowthEffect(object oTarget,int nPenetr) 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)); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpeed, oTarget, HoursToSeconds(24)); } } } diff --git a/_haks/poa_exp_spells/x0_s0_spikegrohb.ncs b/_haks/poa_exp_spells/x0_s0_spikegrohb.ncs index 494148a2..f18da1ce 100644 Binary files a/_haks/poa_exp_spells/x0_s0_spikegrohb.ncs and b/_haks/poa_exp_spells/x0_s0_spikegrohb.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_spikegrohb.nss b/_haks/poa_exp_spells/x0_s0_spikegrohb.nss index b7745f6f..29a1684d 100644 --- a/_haks/poa_exp_spells/x0_s0_spikegrohb.nss +++ b/_haks/poa_exp_spells/x0_s0_spikegrohb.nss @@ -43,12 +43,12 @@ void PRCDoSpikeGrowthEffect(object oTarget,int nPenetr) int nDam = PRCMaximizeOrEmpower(20, 1, nMetaMagic); //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); - effect eDam = EffectDamage(nDam, DAMAGE_TYPE_PIERCING); + effect eDam = PRCEffectDamage(oTarget, 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)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam/*eLink*/, oTarget)); // * only apply a slow effect from this spell once if (GetHasSpellEffect(453, oTarget) == FALSE) @@ -57,7 +57,7 @@ void PRCDoSpikeGrowthEffect(object oTarget,int nPenetr) 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)); + SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpeed, oTarget, HoursToSeconds(24)); } } } diff --git a/_haks/poa_exp_spells/x0_s0_sunburst.ncs b/_haks/poa_exp_spells/x0_s0_sunburst.ncs index 24acdf0c..d5fe1a36 100644 Binary files a/_haks/poa_exp_spells/x0_s0_sunburst.ncs and b/_haks/poa_exp_spells/x0_s0_sunburst.ncs differ diff --git a/_haks/poa_exp_spells/x0_s0_sunburst.nss b/_haks/poa_exp_spells/x0_s0_sunburst.nss index 8c9a4faf..3ac57ed2 100644 --- a/_haks/poa_exp_spells/x0_s0_sunburst.nss +++ b/_haks/poa_exp_spells/x0_s0_sunburst.nss @@ -97,11 +97,12 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { //Roll damage for each target nDamage = PRCMaximizeOrEmpower(6, nPenetr, nMetaMagic); + nDamage += SpellDamagePerDice(oCaster, nCasterLvl); } else { nDamage = PRCMaximizeOrEmpower(6, nCasterLvl/2, nMetaMagic); - } + nDamage += SpellDamagePerDice(oCaster, 6); //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); @@ -162,6 +163,7 @@ 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 index e986a788..6fe90f04 100644 Binary files a/_haks/poa_exp_spells/x2_s0_acidbrth.ncs and b/_haks/poa_exp_spells/x2_s0_acidbrth.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_acidbrth.nss b/_haks/poa_exp_spells/x2_s0_acidbrth.nss index 7b726b73..d11a682e 100644 --- a/_haks/poa_exp_spells/x2_s0_acidbrth.nss +++ b/_haks/poa_exp_spells/x2_s0_acidbrth.nss @@ -62,7 +62,7 @@ void main() // Acid Sheath adds +1 damage per die to acid descriptor spells if (GetHasDescriptor(GetSpellId(), DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, oCaster)) nDamage += nCasterLevel; - + nDamage += SpellDamagePerDice(oCaster, nCasterLevel); int nDC = PRCGetSaveDC(oTarget, oCaster); //Adjust damage according to Reflex Save, Evasion or Improved Evasion diff --git a/_haks/poa_exp_spells/x2_s0_acidshth.ncs b/_haks/poa_exp_spells/x2_s0_acidshth.ncs index f1feee65..989383d5 100644 Binary files a/_haks/poa_exp_spells/x2_s0_acidshth.ncs and b/_haks/poa_exp_spells/x2_s0_acidshth.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_balllghtng.ncs b/_haks/poa_exp_spells/x2_s0_balllghtng.ncs index a987388c..04df8072 100644 Binary files a/_haks/poa_exp_spells/x2_s0_balllghtng.ncs and b/_haks/poa_exp_spells/x2_s0_balllghtng.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_combust.ncs b/_haks/poa_exp_spells/x2_s0_combust.ncs index 468b17fd..a1097374 100644 Binary files a/_haks/poa_exp_spells/x2_s0_combust.ncs and b/_haks/poa_exp_spells/x2_s0_combust.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_combust.nss b/_haks/poa_exp_spells/x2_s0_combust.nss index cdc22878..66fab8f4 100644 --- a/_haks/poa_exp_spells/x2_s0_combust.nss +++ b/_haks/poa_exp_spells/x2_s0_combust.nss @@ -43,7 +43,7 @@ void RunCombustImpact(object oTarget, object oCaster, int nLevel, int nMetaMagic { nDamage = nDamage + (nDamage/2); } - + nDamage += SpellDamagePerDice(oCaster, nDamageLimit); effect eDmg = PRCEffectDamage(oTarget, nDamage,EleDmg); effect eVFX = EffectVisualEffect(VFX_IMP_FLAME_S); @@ -86,6 +86,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent) { nDamage += nDamage / 2;//Damage/Healing is +50% } + nDamage += SpellDamagePerDice(oCaster, nDamageLimit); //nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); int nDuration = 10 + nCasterLevel; if (nDuration < 1) diff --git a/_haks/poa_exp_spells/x2_s0_crumble.ncs b/_haks/poa_exp_spells/x2_s0_crumble.ncs index 310527d1..0c6c8100 100644 Binary files a/_haks/poa_exp_spells/x2_s0_crumble.ncs and b/_haks/poa_exp_spells/x2_s0_crumble.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_crumble.nss b/_haks/poa_exp_spells/x2_s0_crumble.nss index 24895a8a..a364eaba 100644 --- a/_haks/poa_exp_spells/x2_s0_crumble.nss +++ b/_haks/poa_exp_spells/x2_s0_crumble.nss @@ -86,7 +86,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION { nDam = nDam + nDam/2; } - //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); + nDam += SpellDamagePerDice(oCaster, nCasterLvl); if (nDam>0) { diff --git a/_haks/poa_exp_spells/x2_s0_cureother.ncs b/_haks/poa_exp_spells/x2_s0_cureother.ncs index c8a38008..30aa46be 100644 Binary files a/_haks/poa_exp_spells/x2_s0_cureother.ncs and b/_haks/poa_exp_spells/x2_s0_cureother.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_cureother.nss b/_haks/poa_exp_spells/x2_s0_cureother.nss index fc16a633..346fff34 100644 --- a/_haks/poa_exp_spells/x2_s0_cureother.nss +++ b/_haks/poa_exp_spells/x2_s0_cureother.nss @@ -114,6 +114,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 31)); if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl)) { + nDamage += SpellDamagePerDice(OBJECT_SELF, 4); eDam = PRCEffectDamage(oTarget, nDamage,DAMAGE_TYPE_NEGATIVE); //Apply the VFX impact and effects DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); diff --git a/_haks/poa_exp_spells/x2_s0_dtharm.ncs b/_haks/poa_exp_spells/x2_s0_dtharm.ncs index dc661ab0..1cc23d7a 100644 Binary files a/_haks/poa_exp_spells/x2_s0_dtharm.ncs and b/_haks/poa_exp_spells/x2_s0_dtharm.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_elecloop.ncs b/_haks/poa_exp_spells/x2_s0_elecloop.ncs index e1046d39..7a9bf151 100644 Binary files a/_haks/poa_exp_spells/x2_s0_elecloop.ncs and b/_haks/poa_exp_spells/x2_s0_elecloop.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_elecloop.nss b/_haks/poa_exp_spells/x2_s0_elecloop.nss index 3523aff1..2f1def7d 100644 --- a/_haks/poa_exp_spells/x2_s0_elecloop.nss +++ b/_haks/poa_exp_spells/x2_s0_elecloop.nss @@ -119,6 +119,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF); nPotential = PRCMaximizeOrEmpower(6, nNumDice, nMetaMagic); + nPotential += SpellDamagePerDice(OBJECT_SELF, nNumDice); //nPotential += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF); nDamage = PRCGetReflexAdjustedDamage(nPotential, oTarget, (nDC), SAVING_THROW_TYPE_ELECTRICITY); diff --git a/_haks/poa_exp_spells/x2_s0_horiboom.ncs b/_haks/poa_exp_spells/x2_s0_horiboom.ncs index f2d26255..9e7d2054 100644 Binary files a/_haks/poa_exp_spells/x2_s0_horiboom.ncs and b/_haks/poa_exp_spells/x2_s0_horiboom.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_horiboom.nss b/_haks/poa_exp_spells/x2_s0_horiboom.nss index c368f6a2..b1d9413f 100644 --- a/_haks/poa_exp_spells/x2_s0_horiboom.nss +++ b/_haks/poa_exp_spells/x2_s0_horiboom.nss @@ -90,6 +90,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); { nRounds *= 2; } + nDam += SpellDamagePerDice(OBJECT_SELF, nCasterLvl); //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE); //Set damage effect effect eDam = PRCEffectDamage(oTarget, nDam, ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_SONIC)); diff --git a/_haks/poa_exp_spells/x2_s0_icedagg.ncs b/_haks/poa_exp_spells/x2_s0_icedagg.ncs index 44acce20..610b7330 100644 Binary files a/_haks/poa_exp_spells/x2_s0_icedagg.ncs and b/_haks/poa_exp_spells/x2_s0_icedagg.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_icedagg.nss b/_haks/poa_exp_spells/x2_s0_icedagg.nss index 774c68ba..eb15ea64 100644 --- a/_haks/poa_exp_spells/x2_s0_icedagg.nss +++ b/_haks/poa_exp_spells/x2_s0_icedagg.nss @@ -54,7 +54,7 @@ void main() nDamage = 4 * nDice; if(nMetaMagic & METAMAGIC_EMPOWER) nDamage += nDamage / 2; - + nDamage += SpellDamagePerDice(oCaster, nDice); //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget, oCaster)), nSaveType); diff --git a/_haks/poa_exp_spells/x2_s0_magcvest.ncs b/_haks/poa_exp_spells/x2_s0_magcvest.ncs index bb6020b7..644acd0f 100644 Binary files a/_haks/poa_exp_spells/x2_s0_magcvest.ncs and b/_haks/poa_exp_spells/x2_s0_magcvest.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_scntsphere.ncs b/_haks/poa_exp_spells/x2_s0_scntsphere.ncs index 5a8ac3dc..5aae5cf9 100644 Binary files a/_haks/poa_exp_spells/x2_s0_scntsphere.ncs and b/_haks/poa_exp_spells/x2_s0_scntsphere.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_scntsphere.nss b/_haks/poa_exp_spells/x2_s0_scntsphere.nss index 242ca0c3..abab6ef5 100644 --- a/_haks/poa_exp_spells/x2_s0_scntsphere.nss +++ b/_haks/poa_exp_spells/x2_s0_scntsphere.nss @@ -70,6 +70,8 @@ void main() nDamage = 6 * nCasterLvl; if(nMetaMagic & METAMAGIC_EMPOWER) nDamage += nDamage / 2; + nDamage += SpellDamagePerDice(oCaster, nCasterLvl); + int nDC = PRCGetSaveDC(oTarget, oCaster); //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. diff --git a/_haks/poa_exp_spells/x2_s0_tidebattle.ncs b/_haks/poa_exp_spells/x2_s0_tidebattle.ncs index 63a0c6c2..2c3b70f4 100644 Binary files a/_haks/poa_exp_spells/x2_s0_tidebattle.ncs and b/_haks/poa_exp_spells/x2_s0_tidebattle.ncs differ diff --git a/_haks/poa_exp_spells/x2_s0_undeath.ncs b/_haks/poa_exp_spells/x2_s0_undeath.ncs index c963f94e..03940495 100644 Binary files a/_haks/poa_exp_spells/x2_s0_undeath.ncs and b/_haks/poa_exp_spells/x2_s0_undeath.ncs differ diff --git a/_module/nss/ms_name_inc.ncs b/_module/nss/ms_name_inc.ncs new file mode 100644 index 00000000..ecb1c72d Binary files /dev/null and b/_module/nss/ms_name_inc.ncs differ diff --git a/_module/nss/ms_name_inc.nss b/_module/nss/ms_name_inc.nss index a81f1cc3..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,57 +60,206 @@ #include "prc_inc_racial" - - ///// FUNCTION DECLARATIONS //////////////////////////////////////////////////// -//:: Function to get the class type with the highest level -int GetHighestClassType(object oCreature); +/** + * @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); -//:: Returns class level based NPC titles -string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF); +/** + * @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); -// Generates a Random First Name -// based on Race and Gender -// For all Standard PC Races and Animals +/** + * @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); + +/** + * @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"); string sTitle = GetLocalString(oNPC, "TITLE"); string sPostfix = GetLocalString(oNPC, "POSTFIX"); string sBaseRace = GetLocalString(oNPC, "BASE_RACE"); - string sClassTitle; + int nGender = GetGender(oNPC); int bClassTitle = GetLocalInt(oNPC,"CLASS_TITLE"); + int nHighClass = GetHighestClassLevel(oNPC); + int nLevel = GetLevelByClass(nHighClass, oNPC); + + string sClassTitle = GetClassLevelTitle(nHighClass); - //:: Handles class level based NPC titles if (bClassTitle) { int nClassType = GetHighestClassType(oNPC); - sClassTitle = GetClassLevelTitle(nClassType, oNPC); + sClassTitle = GetClassLevelTitle(nClassType); + + string sClassName = GetClassName(nClassType); - FloatingTextStringOnCreature("Title: " + sClassTitle, oNPC); + sRandomName = sBaseRace +" "+ sClassTitle; + DelayCommand(0.0f, SetName(oNPC, (sRandomName))); + return; } - //:: Handles class based Henchman titles int nRndPaladin = GetLocalInt(OBJECT_SELF, "RND_PALADIN"); if (nRndPaladin == 1) @@ -189,781 +338,303 @@ void ms_Nomenclature(object oNPC = OBJECT_SELF) case 30: sPostfix = "the Flowing One"; break; } } - - int nRndRogue = GetLocalInt(OBJECT_SELF,"RND_ROGUE"); - if (nRndRogue == 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; - } + + 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 nRndBarb = GetLocalInt(OBJECT_SELF,"RND_BARBARIAN"); - if (nRndBarb == 1) - { - int nResult = Random(30) + 1; // Generate a random number between 1 and 30 - 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 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 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 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 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 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 Phlan"; - } - 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 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 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 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 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 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 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 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 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 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; + } } - - 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; - } - } - if (sRandomName != "") { if (sRandomName == "RANDOM") @@ -977,10 +648,10 @@ void ms_Nomenclature(object oNPC = OBJECT_SELF) if (bClassTitle) { - sRandomName = sBaseRace +" "+ sClassTitle; + sRandomName = sBaseRace +" "+ sTitle; } - SetName(oNPC, (sRandomName)); + DelayCommand(0.0f, SetName(oNPC, (sRandomName))); return; } } @@ -1053,38 +724,369 @@ string ms_RandomLastName(object oNPC = OBJECT_SELF) return Name; } -//:: Function to get the class type with the highest level -int GetHighestClassType(object oCreature) +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; + + int nLevel = GetLevelByClass(nClassType, oCreature); + int nGender = GetGender(oCreature); + + string sTitle; + + 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: 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_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; + } + + return sTitle; +} + +int GetHighestClassLevel(object oCreature) { int nHighestLevel = -1; - int nHighestClass = -1; - int nClassTypes = 254; // maximum + int nClassTypes = 254; // Maximum number of class types + int i; - int i = 0; - while (i <= nClassTypes) + for (i = 0; i <= nClassTypes; i++) { - // Exclude racial/monster pseudo-classes + // Check if the class type is excluded if (i == CLASS_TYPE_ABERRATION || - i == CLASS_TYPE_ANIMAL || - i == CLASS_TYPE_BEAST || - i == CLASS_TYPE_CONSTRUCT || - i == CLASS_TYPE_DRAGON || - i == CLASS_TYPE_ELEMENTAL || - i == CLASS_TYPE_FEY || - i == CLASS_TYPE_GIANT || - i == CLASS_TYPE_HUMANOID || - i == CLASS_TYPE_MAGICAL_BEAST || - i == CLASS_TYPE_MONSTROUS || - i == CLASS_TYPE_OOZE || - i == CLASS_TYPE_OUTSIDER || - i == CLASS_TYPE_PLANT || - i == CLASS_TYPE_SHAPECHANGER || - i == CLASS_TYPE_UNDEAD || - i == CLASS_TYPE_VERMIN) - { - i++; + i == CLASS_TYPE_ANIMAL || + i == CLASS_TYPE_BEAST || + i == CLASS_TYPE_CONSTRUCT || + i == CLASS_TYPE_DRAGON || + i == CLASS_TYPE_ELEMENTAL || + i == CLASS_TYPE_FEY || + i == CLASS_TYPE_GIANT || + i == CLASS_TYPE_HUMANOID || + i == CLASS_TYPE_MAGICAL_BEAST || + i == CLASS_TYPE_MONSTROUS || + i == CLASS_TYPE_OOZE || + i == CLASS_TYPE_OUTSIDER || + i == CLASS_TYPE_PLANT || + i == CLASS_TYPE_SHAPECHANGER || + i == CLASS_TYPE_UNDEAD || + i == CLASS_TYPE_VERMIN) continue; - } int nLevel = GetLevelByClass(i, oCreature); if (nLevel > 0) @@ -1092,754 +1094,15 @@ int GetHighestClassType(object oCreature) if (nLevel > nHighestLevel) { nHighestLevel = nLevel; - nHighestClass = i; } } - i++; + else + { + break; // Reached an invalid class level, exit the loop + } } - if (nHighestClass != -1) - { - FloatingTextStringOnCreature("Highest Level class is " + IntToString(nHighestClass) + - " at level " + IntToString(nHighestLevel) + ".", oCreature); - } - - return nHighestClass; + return nHighestLevel; } -//:: Returns class level based NPC titles -string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) -{ - string sTitle; - int nLevel = GetLevelByClass(nClassType, oNPC); - int nGender = GetGender(oNPC); - - 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;} - } - 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: - 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; - - } - 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: - 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;} - - } - 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_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; - } - - return sTitle; -} - -//::void main (){} +//::void main (){} \ No newline at end of file