2026/04/27 Update
Fighter was missing Weapon Proficiency: Scythe. Tentative fix for Sweeping Strike + Eldritch Glaive. Fixed Necrocarnum Weapon reducing AB. Updated creature abilities to more closely follow PnP. Updated tlk for Sanctified & Holy Ki Strike.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -21,8 +21,42 @@ void MindStab(object oPC, object oTarget);
|
|||||||
// ---------------
|
// ---------------
|
||||||
// BEGIN FUNCTIONS
|
// BEGIN FUNCTIONS
|
||||||
// ---------------
|
// ---------------
|
||||||
|
void SweepingStrike(object oCaster, object oTarget)
|
||||||
|
{
|
||||||
|
// Prevent multiple sweeping strikes from the same primary target in the same attack sequence
|
||||||
|
string sAttackKey = "SweepingStrike_" + ObjectToString(oCaster) + "_" + ObjectToString(oTarget);
|
||||||
|
if(GetLocalInt(oCaster, sAttackKey))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Mark this attack sequence as processed
|
||||||
|
SetLocalInt(oCaster, sAttackKey, TRUE);
|
||||||
|
DelayCommand(0.5, DeleteLocalInt(oCaster, sAttackKey));
|
||||||
|
|
||||||
|
// Find valid secondary target
|
||||||
|
location lTarget = GetLocation(oTarget);
|
||||||
|
object oAreaTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||||
|
|
||||||
|
while(GetIsObjectValid(oAreaTarget))
|
||||||
|
{
|
||||||
|
// Must be different from primary target and within melee range of both
|
||||||
|
if(oAreaTarget != oTarget &&
|
||||||
|
oAreaTarget != oCaster &&
|
||||||
|
GetIsInMeleeRange(oAreaTarget, oCaster) &&
|
||||||
|
GetIsInMeleeRange(oAreaTarget, oTarget) &&
|
||||||
|
GetIsReactionTypeHostile(oAreaTarget, oCaster))
|
||||||
|
{
|
||||||
|
// Perform the sweeping strike attack
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
|
||||||
|
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCaster);
|
||||||
|
PerformAttack(oAreaTarget, oCaster, eVis, 0.0, 0, 0, GetWeaponDamageType(oWeap), "Sweeping Strike Hit", "Sweeping Strike Miss");
|
||||||
|
break; // Only one sweeping strike per primary attack
|
||||||
|
}
|
||||||
|
oAreaTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SweepingStrike(object oCaster, object oTarget)
|
|
||||||
|
/* void SweepingStrike(object oCaster, object oTarget)
|
||||||
{
|
{
|
||||||
int nValidTarget = FALSE;
|
int nValidTarget = FALSE;
|
||||||
int nRandom = Random(9999);
|
int nRandom = Random(9999);
|
||||||
@@ -61,7 +95,7 @@ void SweepingStrike(object oCaster, object oTarget)
|
|||||||
}// end while - Target loop
|
}// end while - Target loop
|
||||||
DelayCommand(1.0, DeleteLocalInt(oCaster, sKillSwitch));
|
DelayCommand(1.0, DeleteLocalInt(oCaster, sKillSwitch));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
void MindStab(object oPC, object oTarget)
|
void MindStab(object oPC, object oTarget)
|
||||||
{
|
{
|
||||||
SetLocalInt(oPC, "ShadowCloudMind", TRUE);
|
SetLocalInt(oPC, "ShadowCloudMind", TRUE);
|
||||||
@@ -76,4 +110,6 @@ void MindStab(object oPC, object oTarget)
|
|||||||
DelayCommand(1.0, DeleteLocalObject(oPC, "PsionicTarget"));
|
DelayCommand(1.0, DeleteLocalObject(oPC, "PsionicTarget"));
|
||||||
DeleteLocalInt(oPC, "MindStabDur");
|
DeleteLocalInt(oPC, "MindStabDur");
|
||||||
//DelayCommand(0.33, AssignCommand(oPC, ActionAttack(oTarget)));
|
//DelayCommand(0.33, AssignCommand(oPC, ActionAttack(oTarget)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//void main (){}
|
||||||
@@ -696,7 +696,28 @@ void main()
|
|||||||
if (GetAlignmentGoodEvil(oMeldshaper) == ALIGNMENT_EVIL)
|
if (GetAlignmentGoodEvil(oMeldshaper) == ALIGNMENT_EVIL)
|
||||||
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(DamageTypeToIPConst(GetWeaponDamageType(oItem)), IPDamageConstant((nEssentia*2) + nBonus)), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(DamageTypeToIPConst(GetWeaponDamageType(oItem)), IPDamageConstant((nEssentia*2) + nBonus)), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||||
}
|
}
|
||||||
if (GetHasSpellEffect(MELD_NECROCARNUM_WEAPON, oMeldshaper))
|
if (GetHasSpellEffect(MELD_NECROCARNUM_WEAPON, oMeldshaper))
|
||||||
|
{
|
||||||
|
// Get current enhancement bonus
|
||||||
|
int nCurrentEnh = IPGetWeaponEnhancementBonus(oItem, FALSE);
|
||||||
|
|
||||||
|
// Calculate needed enhancement to reach +3 total
|
||||||
|
int nNeededEnh = 3 - nCurrentEnh;
|
||||||
|
if (nNeededEnh > 0)
|
||||||
|
{
|
||||||
|
IPSafeAddItemProperty(oItem, ItemPropertyEnhancementBonus(nNeededEnh), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||||
|
// Add matching penalty to keep attack bonus unchanged
|
||||||
|
IPSafeAddItemProperty(oItem, ItemPropertyEnhancementPenalty(nNeededEnh), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GetIsMeldBound(oMeldshaper, MELD_NECROCARNUM_WEAPON) == CHAKRA_HANDS || GetIsMeldBound(oMeldshaper, MELD_NECROCARNUM_WEAPON) == CHAKRA_DOUBLE_HANDS)
|
||||||
|
{
|
||||||
|
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||||
|
AddEventScript(oItem, EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if (GetHasSpellEffect(MELD_NECROCARNUM_WEAPON, oMeldshaper))
|
||||||
{
|
{
|
||||||
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(3), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(3), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||||
IPSafeAddItemProperty(oItem, ItemPropertyAttackPenalty(3), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackPenalty(3), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||||
@@ -706,7 +727,7 @@ void main()
|
|||||||
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||||
AddEventScript(oItem, EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
|
AddEventScript(oItem, EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
if (GetIsMeldBound(oMeldshaper, MELD_MAULING_GAUNTLETS) == CHAKRA_ARMS || GetIsMeldBound(oMeldshaper, MELD_MAULING_GAUNTLETS) == CHAKRA_DOUBLE_ARMS)
|
if (GetIsMeldBound(oMeldshaper, MELD_MAULING_GAUNTLETS) == CHAKRA_ARMS || GetIsMeldBound(oMeldshaper, MELD_MAULING_GAUNTLETS) == CHAKRA_DOUBLE_ARMS)
|
||||||
IPSafeAddItemProperty(oItem, ItemPropertyKeen(), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
IPSafeAddItemProperty(oItem, ItemPropertyKeen(), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,16 @@
|
|||||||
#include "moi_inc_moifunc"
|
#include "moi_inc_moifunc"
|
||||||
#include "inc_dynconv"
|
#include "inc_dynconv"
|
||||||
|
|
||||||
|
// Add this function to handle delayed processing
|
||||||
|
void DelayedChakraBindUnequip(object oMeldshaper, object oItem)
|
||||||
|
{
|
||||||
|
// Check if we're still in a valid state
|
||||||
|
if(GetIsObjectValid(oMeldshaper) && GetIsObjectValid(oItem))
|
||||||
|
{
|
||||||
|
ChakraBindUnequip(oMeldshaper, oItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
int nEvent = GetRunningEvent();
|
int nEvent = GetRunningEvent();
|
||||||
@@ -12,6 +22,7 @@ void main()
|
|||||||
{
|
{
|
||||||
case EVENT_ONPLAYERREST_FINISHED: oMeldshaper = GetLastBeingRested(); break;
|
case EVENT_ONPLAYERREST_FINISHED: oMeldshaper = GetLastBeingRested(); break;
|
||||||
case EVENT_ONCLIENTENTER: oMeldshaper = GetEnteringObject(); break;
|
case EVENT_ONCLIENTENTER: oMeldshaper = GetEnteringObject(); break;
|
||||||
|
case EVENT_ONPLAYEREQUIPITEM: oMeldshaper = GetItemLastEquippedBy(); break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
oMeldshaper = OBJECT_SELF;
|
oMeldshaper = OBJECT_SELF;
|
||||||
@@ -38,7 +49,7 @@ void main()
|
|||||||
AssignCommand(oMeldshaper, ClearAllActions(TRUE));
|
AssignCommand(oMeldshaper, ClearAllActions(TRUE));
|
||||||
SetLocalInt(oMeldshaper, "MeldshapeClass", CLASS_TYPE_INCARNATE);
|
SetLocalInt(oMeldshaper, "MeldshapeClass", CLASS_TYPE_INCARNATE);
|
||||||
StartDynamicConversation("moi_meldshapecnv", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
|
StartDynamicConversation("moi_meldshapecnv", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
|
||||||
}
|
}
|
||||||
else if(nEvent == EVENT_ONPLAYEREQUIPITEM)
|
else if(nEvent == EVENT_ONPLAYEREQUIPITEM)
|
||||||
{
|
{
|
||||||
oMeldshaper = GetItemLastEquippedBy();
|
oMeldshaper = GetItemLastEquippedBy();
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
|
moi_mld_necrowpn
|
||||||
|
|
||||||
20/1/20 by Stratovarius
|
20/1/20 by Stratovarius
|
||||||
|
|
||||||
Necrocarnum Weapon
|
Necrocarnum Weapon
|
||||||
@@ -58,7 +61,7 @@ void main()
|
|||||||
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
|
||||||
if (nEssentia) eLink = EffectLinkEffects(eLink, NecrocarnumWeapon(nEssentia));
|
if (nEssentia) eLink = EffectLinkEffects(eLink, NecrocarnumWeapon(nEssentia));
|
||||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
|
DelayCommand(0.1f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0));
|
||||||
|
|
||||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_NECROCARNUM_WEAPON), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_NECROCARNUM_WEAPON), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||||
}
|
}
|
||||||
@@ -15,10 +15,12 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nHD = GetHitDice(GetAreaOfEffectCreator());
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
nHD = nHD/3+1;
|
int nHD = GetHitDice(oNPC);
|
||||||
int nDC = 10 + nHD/3;
|
int nZap = 1 + (nHD / 3);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 + nCHAMod + (nHD/2);
|
||||||
int nDamage;
|
int nDamage;
|
||||||
effect eDam;
|
effect eDam;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
||||||
@@ -28,7 +30,7 @@ void main()
|
|||||||
{
|
{
|
||||||
if(GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
if(GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||||
{
|
{
|
||||||
nDamage = d4(nHD);
|
nDamage = d4(nZap);
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_AURA_ELECTRICITY));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_AURA_ELECTRICITY));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
@@ -38,8 +40,8 @@ void main()
|
|||||||
}
|
}
|
||||||
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ELECTRICAL);
|
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ELECTRICAL);
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextInPersistentObject();
|
oTarget = GetNextInPersistentObject();
|
||||||
|
|||||||
@@ -19,19 +19,20 @@ void main()
|
|||||||
{
|
{
|
||||||
//Declare major variables
|
//Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oNPC = OBJECT_SELF;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC);
|
||||||
|
int nDC = 10 +nCONMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = nHD /2;
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ACID));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ACID));
|
||||||
|
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
//nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ACID);
|
//nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ACID);
|
||||||
//Make a ranged touch attack
|
//Make a ranged touch attack
|
||||||
|
|||||||
@@ -19,19 +19,22 @@
|
|||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
nCount = PRCGetScaledDuration(nCount, oTarget);
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_CHARM);
|
effect eVis = EffectVisualEffect(VFX_IMP_CHARM);
|
||||||
effect eBolt = EffectCharmed();
|
effect eBolt = EffectCharmed();
|
||||||
eBolt = GetScaledEffect(eBolt, oTarget);
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
effect eLink = EffectLinkEffects(eBolt, eDur);
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
|
||||||
int nDC = 10 + (nHD/2);
|
//Fire cast spell at event for the specified target
|
||||||
int nCount = (nHD + 1) / 2;
|
|
||||||
nCount = PRCGetScaledDuration(nCount, oTarget);
|
|
||||||
|
|
||||||
//Fire cast spell at event for the specified target
|
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_CHARM));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_CHARM));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
|
|||||||
@@ -18,18 +18,19 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD / 3;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD /3);
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_CHARISMA));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_CHARISMA));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
|
|||||||
@@ -18,21 +18,22 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = nHD /2;
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_COLD));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_COLD));
|
||||||
//Make a ranged touch attack
|
//Make a ranged touch attack
|
||||||
int nTouch = PRCDoRangedTouchAttack(oTarget);
|
int nTouch = PRCDoRangedTouchAttack(oTarget);
|
||||||
if(nTouch > 0)
|
if(nTouch > 0)
|
||||||
|
|||||||
@@ -18,20 +18,22 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD /3);
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD /3);
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_CONSTITUTION));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_CONSTITUTION));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,17 +18,22 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eVis2 = EffectVisualEffect(VFX_IMP_CONFUSION_S);
|
|
||||||
effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
int nHD = GetHitDice(oNPC);
|
||||||
effect eBolt = EffectConfused();
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
effect eLink = EffectLinkEffects(eBolt, eDur);
|
int nCount = (nHD + 1) / 2;
|
||||||
eLink = EffectLinkEffects(eLink, eVis);
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD + 1) / 2;
|
effect eVis2 = EffectVisualEffect(VFX_IMP_CONFUSION_S);
|
||||||
|
effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
||||||
|
effect eBolt = EffectConfused();
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eVis);
|
||||||
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_CONFUSE));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_CONFUSE));
|
||||||
|
|||||||
@@ -18,21 +18,25 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
|
||||||
effect eBolt = EffectDazed();
|
int nHD = GetHitDice(oNPC);
|
||||||
eBolt = GetScaledEffect(eBolt, oTarget);
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
effect eLink = EffectLinkEffects(eBolt, eDur);
|
int nCount = (nHD + 1) / 2;
|
||||||
eLink = EffectLinkEffects(eLink, eVis);
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
||||||
|
effect eBolt = EffectDazed();
|
||||||
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eVis);
|
||||||
|
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD + 1) / 2;
|
|
||||||
nCount = PRCGetScaledDuration(nCount, oTarget);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_DAZE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DAZE));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,19 +13,23 @@
|
|||||||
//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws
|
//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
#include "prc_inc_spells"
|
#include "prc_inc_spells"
|
||||||
#include "prc_inc_sp_tch"
|
#include "prc_inc_sp_tch"
|
||||||
#include "NW_I0_SPELLS"
|
#include "NW_I0_SPELLS"
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
|
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
|
||||||
effect eBolt = EffectDeath();
|
effect eBolt = EffectDeath();
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_DEATH));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DEATH));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(PRCDoRangedTouchAttack(oTarget))
|
if(PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,20 +18,22 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD /3);
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_DEXTERITY));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_DEXTERITY));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,12 +20,15 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nRacial = GetRacialType(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nRacial = MyPRCGetRacialType(oNPC);
|
||||||
int nDisease;
|
int nDisease;
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_DISEASE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DISEASE));
|
||||||
|
|
||||||
//Here we use the racial type of the attacker to select an
|
//Here we use the racial type of the attacker to select an
|
||||||
//appropriate disease.
|
//appropriate disease.
|
||||||
@@ -38,7 +41,7 @@ void main()
|
|||||||
nDisease = DISEASE_FILTH_FEVER;
|
nDisease = DISEASE_FILTH_FEVER;
|
||||||
break;
|
break;
|
||||||
case RACIAL_TYPE_OUTSIDER:
|
case RACIAL_TYPE_OUTSIDER:
|
||||||
if(GetTag(OBJECT_SELF) == "NW_SLAADRED")
|
if(GetTag(oNPC) == "NW_SLAADRED")
|
||||||
{
|
{
|
||||||
nDisease = DISEASE_RED_SLAAD_EGGS;
|
nDisease = DISEASE_RED_SLAAD_EGGS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,23 +18,28 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S);
|
|
||||||
effect eBolt = EffectDominated();
|
int nHD = GetHitDice(oNPC);
|
||||||
eBolt = GetScaledEffect(eBolt, oTarget);
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED);
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
eBolt = GetScaledEffect(eBolt, oTarget);
|
int nCount = (nHD + 1) / 2;
|
||||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
if (nCount == 0) { nCount = 1; }
|
||||||
effect eLink = EffectLinkEffects(eBolt, eDur);
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
eLink = EffectLinkEffects(eLink, eVis2);
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S);
|
||||||
int nDC = 10 + (nHD/2);
|
effect eBolt = EffectDominated();
|
||||||
int nCount = (nHD + 1) / 2;
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
nCount = PRCGetScaledDuration(nCount, oTarget);
|
effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED);
|
||||||
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eVis2);
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_DOMINATE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DOMINATE));
|
||||||
|
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,21 +19,21 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = nHD /2;
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_FIRE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_FIRE));
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
//nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE);
|
//nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE);
|
||||||
//Make a ranged touch attack
|
//Make a ranged touch attack
|
||||||
|
|||||||
@@ -18,20 +18,21 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD /3);
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_INTELLIGENCE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_INTELLIGENCE));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,15 +18,23 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
//:: Declare major variables
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oNPC = OBJECT_SELF;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eBolt = EffectKnockdown();
|
|
||||||
int nDC = 10 + (nHD/2);
|
int nHD = GetHitDice(oNPC);
|
||||||
effect eDam = PRCEffectDamage(oTarget, d6(), DAMAGE_TYPE_BLUDGEONING);
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
//Fire cast spell at event for the specified target
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_KNOCKDOWN));
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
|
||||||
|
effect eBolt = EffectKnockdown();
|
||||||
|
effect eDam = EffectDamage(d6(), DAMAGE_TYPE_BLUDGEONING);
|
||||||
|
|
||||||
|
//Fire cast spell at event for the specified target
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_KNOCKDOWN));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,20 +17,21 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF,BODY_NODE_HAND);
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF,BODY_NODE_HAND);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = nHD /2;
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_LIGHTNING));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_LIGHTNING));
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
@@ -51,6 +52,4 @@ void main()
|
|||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
||||||
//SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLightning, oTarget, 1.8);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,21 +18,23 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = nHD/5;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eBolt = EffectNegativeLevel(1);
|
effect eBolt = EffectNegativeLevel(1);
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = nHD /5;
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_LEVEL_DRAIN));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_LEVEL_DRAIN));
|
||||||
|
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,20 +18,24 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eVis = EffectVisualEffect(VFX_DUR_PARALYZED);
|
|
||||||
effect eBolt = EffectParalyze();
|
int nHD = GetHitDice(oNPC);
|
||||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
effect eLink = EffectLinkEffects(eBolt, eDur);
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
eLink = EffectLinkEffects(eLink, eVis);
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
int nDC = 10 + (nHD/2);
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
int nCount = (nHD + 1) / 2;
|
|
||||||
nCount = PRCGetScaledDuration(nCount, oTarget);
|
effect eVis = EffectVisualEffect(VFX_DUR_PARALYZED);
|
||||||
|
effect eBolt = EffectParalyze();
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
|
eLink = EffectLinkEffects(eLink, eVis);
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_PARALYZE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_PARALYZE));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,14 +18,17 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
effect ePoison;
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
int nPoison;
|
|
||||||
int nRacial = MyPRCGetRacialType(OBJECT_SELF);
|
int nHD = GetHitDice(oNPC);
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
int nRacial = MyPRCGetRacialType(OBJECT_SELF);
|
||||||
|
int nPoison;
|
||||||
|
effect ePoison;
|
||||||
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_POISON));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_POISON));
|
||||||
|
|
||||||
//Determine the poison type based on the Racial Type and HD
|
//Determine the poison type based on the Racial Type and HD
|
||||||
// June 3/04: Bugfix for some screwy if statements.
|
// June 3/04: Bugfix for some screwy if statements.
|
||||||
|
|||||||
@@ -18,20 +18,22 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = nHD /2;
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_SHARDS));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_SHARDS));
|
||||||
|
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
//nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC);
|
//nDamage = GetReflexAdjustedDamage(nDamage, oTarget, nDC);
|
||||||
//Make a ranged touch attack
|
//Make a ranged touch attack
|
||||||
|
|||||||
@@ -18,18 +18,23 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_SLOW);
|
effect eVis = EffectVisualEffect(VFX_IMP_SLOW);
|
||||||
effect eBolt = EffectSlow();
|
effect eBolt = EffectSlow();
|
||||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
effect eLink = EffectLinkEffects(eBolt, eDur);
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD + 1) / 2;
|
|
||||||
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_SLOW));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_SLOW));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,18 +18,19 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD + 1) / 2;
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD /3);
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_STRENGTH));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_STRENGTH));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
@@ -41,4 +42,4 @@ void main()
|
|||||||
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -18,19 +18,25 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
|
|
||||||
effect eBolt = EffectStunned();
|
int nHD = GetHitDice(oNPC);
|
||||||
eBolt = GetScaledEffect(eBolt, oTarget);
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
effect eLink = EffectLinkEffects(eBolt, eDur);
|
int nCount = (nHD + 1) / 2;
|
||||||
int nDC = 10 + (nHD/2);
|
if (nCount == 0) { nCount = 1; }
|
||||||
int nCount = (nHD + 1) / 2;
|
nCount = GetScaledDuration(nCount, oTarget);
|
||||||
nCount = PRCGetScaledDuration(nCount, oTarget);
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
|
||||||
|
effect eBolt = EffectStunned();
|
||||||
|
eBolt = GetScaledEffect(eBolt, oTarget);
|
||||||
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
effect eLink = EffectLinkEffects(eBolt, eDur);
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_STUN));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_STUN));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,17 +19,21 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
//:: Declare major variables
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC);
|
||||||
|
int nDC = 10 +nCONMod+ (nHD/2);
|
||||||
|
int nCount = 1 + (nHD /2);
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
effect eVis = EffectVisualEffect(VFX_DUR_WEB);
|
effect eVis = EffectVisualEffect(VFX_DUR_WEB);
|
||||||
effect eStick = EffectEntangle();
|
effect eStick = EffectEntangle();
|
||||||
effect eLink = EffectLinkEffects(eVis, eStick);
|
effect eLink = EffectLinkEffects(eVis, eStick);
|
||||||
|
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD + 1) / 2;
|
|
||||||
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_WEB));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_WEB));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,20 +18,21 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oNPC = OBJECT_SELF;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nCount = (nHD /3);
|
||||||
|
if (nCount == 0) { nCount = 1; }
|
||||||
|
int nDamage = d6(nCount);
|
||||||
|
|
||||||
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eBolt;
|
effect eBolt;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
int nCount = (nHD /3);
|
|
||||||
if (nCount == 0)
|
|
||||||
{
|
|
||||||
nCount = 1;
|
|
||||||
}
|
|
||||||
int nDamage = d6(nCount);
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_WISDOM));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_WISDOM));
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if (PRCDoRangedTouchAttack(oTarget))
|
if (PRCDoRangedTouchAttack(oTarget))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,11 +17,15 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
int nDamage;
|
int nDamage;
|
||||||
int nLoop = nHD / 3;
|
int nLoop = nHD / 3;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
if(nLoop == 0)
|
if(nLoop == 0)
|
||||||
{
|
{
|
||||||
@@ -33,7 +37,6 @@ void main()
|
|||||||
nDamage = nDamage + d6(2);
|
nDamage = nDamage + d6(2);
|
||||||
}
|
}
|
||||||
location lTargetLocation = PRCGetSpellTargetLocation();
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
object oTarget;
|
|
||||||
effect eCone;
|
effect eCone;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
|
||||||
|
|
||||||
@@ -41,14 +44,14 @@ void main()
|
|||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_ACID));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_ACID));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(),SAVING_THROW_TYPE_ACID);
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ACID);
|
||||||
//Set damage effect
|
//Set damage effect
|
||||||
eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ACID);
|
eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ACID);
|
||||||
if(nDamage > 0)
|
if(nDamage > 0)
|
||||||
|
|||||||
@@ -17,21 +17,30 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
int nDamage;
|
int nDamage;
|
||||||
int nDice = nHD / 3;
|
int nLoop = nHD / 3;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
|
|
||||||
if(nDice == 0)
|
if(nLoop == 0)
|
||||||
{
|
{
|
||||||
nDice = 1;
|
nLoop = 1;
|
||||||
}
|
}
|
||||||
nDice *= 2;
|
|
||||||
|
//Calculate the damage
|
||||||
location lTargetLocation = PRCGetSpellTargetLocation();
|
for (nLoop; nLoop > 0; nLoop--)
|
||||||
object oTarget;
|
{
|
||||||
|
nDamage = nDamage + d6(2);
|
||||||
|
}
|
||||||
|
location lTargetLocation = GetSpellTargetLocation();
|
||||||
|
|
||||||
effect eCone;
|
effect eCone;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
||||||
|
|
||||||
@@ -39,14 +48,13 @@ void main()
|
|||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_COLD));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_COLD));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
nDamage = d6(nDice);
|
|
||||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD);
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD);
|
||||||
//Set damage effect
|
//Set damage effect
|
||||||
eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD);
|
eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD);
|
||||||
|
|||||||
@@ -16,13 +16,21 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nRacial = MyPRCGetRacialType(oNPC);
|
||||||
|
int nDisease;
|
||||||
|
|
||||||
location lTargetLocation = PRCGetSpellTargetLocation();
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
object oTarget;
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nRacial = MyPRCGetRacialType(OBJECT_SELF);
|
effect eCone = EffectDisease(nDisease);
|
||||||
int nDisease;
|
effect eVis = EffectVisualEffect(VFX_IMP_DISEASE_S);
|
||||||
|
|
||||||
//Determine the disease type based on the Racial Type and HD
|
//Determine the disease type based on the Racial Type and HD
|
||||||
switch (nRacial)
|
switch (nRacial)
|
||||||
{
|
{
|
||||||
@@ -62,9 +70,7 @@ void main()
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//Set disease effect
|
|
||||||
effect eCone = EffectDisease(nDisease);
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_DISEASE_S);
|
|
||||||
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
|
|||||||
@@ -19,12 +19,18 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
int nDamage;
|
int nDamage;
|
||||||
int nLoop = nHD / 3;
|
int nLoop = nHD / 3;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
|
|
||||||
if(nLoop == 0)
|
if(nLoop == 0)
|
||||||
{
|
{
|
||||||
nLoop = 1;
|
nLoop = 1;
|
||||||
@@ -35,22 +41,22 @@ void main()
|
|||||||
nDamage = nDamage + d6(2);
|
nDamage = nDamage + d6(2);
|
||||||
}
|
}
|
||||||
location lTargetLocation = PRCGetSpellTargetLocation();
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
object oTarget;
|
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_HAND);
|
||||||
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF,BODY_NODE_HAND);
|
|
||||||
effect eCone;
|
effect eCone;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
||||||
|
|
||||||
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_LIGHTNING));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_LIGHTNING));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSpellSaveDC(), SAVING_THROW_TYPE_ELECTRICITY);
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY);
|
||||||
//Set damage effect
|
//Set damage effect
|
||||||
eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ELECTRICAL);
|
eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ELECTRICAL);
|
||||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5);
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5);
|
||||||
|
|||||||
@@ -18,11 +18,16 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
int nDamage;
|
int nDamage;
|
||||||
int nLoop = nHD / 3;
|
int nLoop = nHD / 3;
|
||||||
int nDC = 10 + (nHD/2);
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
if(nLoop == 0)
|
if(nLoop == 0)
|
||||||
{
|
{
|
||||||
@@ -34,7 +39,6 @@ void main()
|
|||||||
nDamage = nDamage + d6(2);
|
nDamage = nDamage + d6(2);
|
||||||
}
|
}
|
||||||
location lTargetLocation = PRCGetSpellTargetLocation();
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
object oTarget;
|
|
||||||
effect eCone;
|
effect eCone;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
|
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
|
||||||
|
|
||||||
@@ -49,7 +53,7 @@ void main()
|
|||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSpellSaveDC(), DAMAGE_TYPE_SONIC);
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,DAMAGE_TYPE_SONIC);
|
||||||
//Set damage effect
|
//Set damage effect
|
||||||
eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_SONIC);
|
eCone = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_SONIC);
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||||
|
|||||||
@@ -16,32 +16,37 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage = GetHitDice(OBJECT_SELF)/5;
|
object oNPC = OBJECT_SELF;
|
||||||
if (nDamage == 0)
|
object oTarget;
|
||||||
{
|
|
||||||
nDamage = 1;
|
int nHD = GetHitDice(oNPC);
|
||||||
}
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
int nDamage = nHD/5;
|
||||||
|
|
||||||
|
if (nDamage == 0) {nDamage = 1;}
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_ABILITY_DRAIN_CHARISMA));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_CHARISMA));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay))
|
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay))
|
||||||
{
|
{
|
||||||
@@ -55,7 +60,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,31 +16,38 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage;
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDamage = d6(nHD);
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
float fDelay;
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_COLD);
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_COLD);
|
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_COLD));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_COLD));
|
||||||
//Roll the damage
|
|
||||||
nDamage = d6(GetHitDice(OBJECT_SELF));
|
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD);
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD);
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
eHowl = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD);
|
eHowl = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD);
|
||||||
if(nDamage > 0)
|
if(nDamage > 0)
|
||||||
{
|
{
|
||||||
@@ -51,7 +58,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,33 +17,40 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage = GetHitDice(OBJECT_SELF)/5;
|
object oNPC = OBJECT_SELF;
|
||||||
if (nDamage == 0)
|
object oTarget;
|
||||||
{
|
|
||||||
nDamage = 1;
|
int nHD = GetHitDice(oNPC);
|
||||||
}
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
int nDamage = nHD/5;
|
||||||
|
|
||||||
|
if (nDamage == 0) {nDamage = 1;}
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
|
||||||
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
|
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_ABILITY_DRAIN_CONSTITUTION));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_CONSTITUTION));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay))
|
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
|
||||||
{
|
{
|
||||||
//Set the Ability mod and change to supernatural effect
|
//Set the Ability mod and change to supernatural effect
|
||||||
eHowl = EffectAbilityDecrease(ABILITY_CONSTITUTION, nDamage);
|
eHowl = EffectAbilityDecrease(ABILITY_CONSTITUTION, nDamage);
|
||||||
@@ -55,7 +62,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,27 +17,40 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
int nDamage = nHD/5;
|
||||||
|
|
||||||
|
if (nDamage == 0) {nDamage = 1;}
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
|
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
|
||||||
effect eHowl = EffectDeath();
|
effect eHowl = EffectDeath();
|
||||||
float fDelay;
|
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
|
||||||
//Get first target in spell area
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
|
||||||
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != OBJECT_SELF)
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_DEATH));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DEATH));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH, OBJECT_SELF, fDelay))
|
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay))
|
||||||
{
|
{
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
|
||||||
@@ -46,7 +59,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,34 +17,39 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage = GetHitDice(OBJECT_SELF)/5;
|
object oNPC = OBJECT_SELF;
|
||||||
if (nDamage == 0)
|
object oTarget;
|
||||||
{
|
|
||||||
nDamage = 1;
|
int nHD = GetHitDice(oNPC);
|
||||||
}
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
int nDamage = nHD/5;
|
||||||
|
|
||||||
|
if (nDamage == 0) {nDamage = 1;}
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
|
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_ABILITY_DRAIN_DEXTERITY));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_DEXTERITY));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay))
|
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
|
||||||
{
|
{
|
||||||
//Set the Ability mod and change to supernatural effect
|
//Set the Ability mod and change to supernatural effect
|
||||||
eHowl = EffectAbilityDecrease(ABILITY_DEXTERITY, nDamage);
|
eHowl = EffectAbilityDecrease(ABILITY_DEXTERITY, nDamage);
|
||||||
@@ -56,7 +61,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,14 +15,22 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage = d6(GetHitDice(OBJECT_SELF));
|
object oNPC = OBJECT_SELF;
|
||||||
int nRacial = MyPRCGetRacialType(OBJECT_SELF);
|
object oTarget;
|
||||||
int nDisease;
|
|
||||||
|
int nRacial = MyPRCGetRacialType(oNPC);
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nDamage = d6(nHD);
|
||||||
|
int nDisease;
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
|
|
||||||
effect eDisease;
|
effect eDisease;
|
||||||
effect ePulse = EffectVisualEffect(266);
|
effect ePulse = EffectVisualEffect(266);
|
||||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, ePulse, GetLocation(OBJECT_SELF));
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
|
||||||
|
|
||||||
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, ePulse, GetLocation(oNPC));
|
||||||
|
|
||||||
//Determine the disease type based on the Racial Type
|
//Determine the disease type based on the Racial Type
|
||||||
switch (nRacial)
|
switch (nRacial)
|
||||||
@@ -46,16 +54,17 @@ void main()
|
|||||||
nDisease = DISEASE_MINDFIRE;
|
nDisease = DISEASE_MINDFIRE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
|
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
//Get first target in spell area
|
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_DISEASE));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_DISEASE));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
@@ -66,7 +75,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,32 +15,38 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
int nDamage;
|
int nDamage;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
|
||||||
effect eHowl = EffectVisualEffect(VFX_IMP_PULSE_COLD);
|
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
|
||||||
DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eHowl, GetLocation(OBJECT_SELF)));
|
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_CHEST);
|
||||||
|
effect eHowl = EffectVisualEffect(VFX_IMP_PULSE_COLD);
|
||||||
|
|
||||||
|
DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eHowl, GetLocation(oNPC)));
|
||||||
|
|
||||||
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF,BODY_NODE_CHEST);
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_LIGHTNING));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_LIGHTNING));
|
||||||
//Roll the damage
|
//Roll the damage
|
||||||
nDamage = d6(nHD);
|
nDamage = d6(nHD);
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY);
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY);
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
eHowl = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ELECTRICAL);
|
eHowl = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_ELECTRICAL);
|
||||||
if(nDamage > 0)
|
if(nDamage > 0)
|
||||||
{
|
{
|
||||||
@@ -52,7 +58,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,23 +16,29 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
int nDamage;
|
int nDamage;
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
float fDelay;
|
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != OBJECT_SELF)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_FIRE));
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_FIRE));
|
||||||
//Roll the damage
|
//Roll the damage
|
||||||
|
|||||||
@@ -16,35 +16,42 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
int nDamage;
|
int nDamage;
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M);
|
effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M);
|
||||||
effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
|
effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_HOLY);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_HOLY);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
|
||||||
//Get first target in spell area
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
|
||||||
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
|
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Roll the amount to heal or damage
|
//Roll the amount to heal or damage
|
||||||
nDamage = d4(nHD);
|
nDamage = d4(nHD);
|
||||||
//If the target is not undead
|
//If the target is not undead
|
||||||
if (MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
|
if (MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
|
||||||
{
|
{
|
||||||
//Make a faction check
|
//Make a faction check
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(GetIsFriend(oTarget))
|
if(GetIsFriend(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_HOLY, FALSE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY, FALSE));
|
||||||
//Set heal effect
|
//Set heal effect
|
||||||
eHowl = EffectHeal(nDamage);
|
eHowl = EffectHeal(nDamage);
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
@@ -55,8 +62,8 @@ void main()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_DIVINE);
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_DIVINE);
|
||||||
//Set damage effect
|
//Set damage effect
|
||||||
@@ -64,7 +71,7 @@ void main()
|
|||||||
if(nDamage > 0)
|
if(nDamage > 0)
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_HOLY));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY));
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
|
||||||
@@ -72,7 +79,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,34 +17,41 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage = GetHitDice(OBJECT_SELF)/5;
|
object oNPC = OBJECT_SELF;
|
||||||
if (nDamage == 0)
|
object oTarget;
|
||||||
{
|
|
||||||
nDamage = 1;
|
int nHD = GetHitDice(oNPC);
|
||||||
}
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
int nDamage = nHD/5;
|
||||||
|
|
||||||
|
if (nDamage == 0) {nDamage = 1;}
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
|
||||||
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
|
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
|
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_ABILITY_DRAIN_INTELLIGENCE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_INTELLIGENCE));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay))
|
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
|
||||||
{
|
{
|
||||||
//Set the Ability mod and change to supernatural effect
|
//Set the Ability mod and change to supernatural effect
|
||||||
eHowl = EffectAbilityDecrease(ABILITY_INTELLIGENCE, nDamage);
|
eHowl = EffectAbilityDecrease(ABILITY_INTELLIGENCE, nDamage);
|
||||||
|
|||||||
@@ -17,25 +17,34 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
float fDelay;
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
float fDelay;
|
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetLocation(OBJECT_SELF));
|
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetLocation(oNPC));
|
||||||
//Get first target in spell area
|
|
||||||
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
|
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
fDelay = GetSpellEffectDelay(GetLocation(OBJECT_SELF), oTarget)/20;
|
fDelay = GetSpellEffectDelay(GetLocation(oNPC), oTarget)/20;
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay))
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
|
||||||
{
|
{
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
eHowl = EffectNegativeLevel(1);
|
eHowl = EffectNegativeLevel(1);
|
||||||
@@ -45,7 +54,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,24 +16,32 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage;
|
object oNPC = GetAreaOfEffectCreator();
|
||||||
|
object oTarget = GetEnteringObject();
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
int nDamage;
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M);
|
effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M);
|
||||||
effect eVis2 = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis2 = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
|
||||||
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
|
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Roll the amount to heal or damage
|
//Roll the amount to heal or damage
|
||||||
nDamage = d4(nHD);
|
nDamage = d4(nHD);
|
||||||
//If the target is undead
|
//If the target is undead
|
||||||
@@ -43,7 +51,7 @@ void main()
|
|||||||
if(GetIsFriend(oTarget))
|
if(GetIsFriend(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_HOLY, FALSE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY, FALSE));
|
||||||
//Set heal effect
|
//Set heal effect
|
||||||
eHowl = EffectHeal(nDamage);
|
eHowl = EffectHeal(nDamage);
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
@@ -53,8 +61,8 @@ void main()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget) && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
|
if(!GetIsReactionTypeFriendly(oTarget) && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
|
||||||
{
|
{
|
||||||
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
|
||||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE);
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE);
|
||||||
//Set damage effect
|
//Set damage effect
|
||||||
@@ -62,7 +70,7 @@ void main()
|
|||||||
if(nDamage > 0)
|
if(nDamage > 0)
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_HOLY));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY));
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget));
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
|
||||||
@@ -71,6 +79,6 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,14 +16,21 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage = d6(GetHitDice(OBJECT_SELF));
|
object oNPC = OBJECT_SELF;
|
||||||
int nRacial = GetRacialType(OBJECT_SELF);
|
object oTarget;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC);
|
||||||
|
int nDC = 10 +nCONMod+ (nHD/2);
|
||||||
|
int nRacial = MyPRCGetRacialType(oNPC);
|
||||||
int nPoison;
|
int nPoison;
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
|
|
||||||
effect ePoison;
|
effect ePoison;
|
||||||
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
|
||||||
|
|
||||||
//Determine the poison type based on the Racial Type and HD
|
//Determine the poison type based on the Racial Type and HD
|
||||||
switch (nRacial)
|
switch (nRacial)
|
||||||
{
|
{
|
||||||
@@ -102,27 +109,28 @@ void main()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
|
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
//Get first target in spell area
|
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
//Get first target in spell area
|
||||||
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_POISON));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_POISON));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
ePoison = EffectPoison(nPoison);
|
ePoison = EffectPoison(nPoison);
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,10 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//if (WildMagicOverride()) { return; }
|
||||||
object oNPC = oNPC;
|
|
||||||
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
object oTarget;
|
object oTarget;
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
@@ -29,10 +31,10 @@ void main()
|
|||||||
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != oNPC)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DISEASE));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DISEASE));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
@@ -43,6 +45,6 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,37 +12,45 @@
|
|||||||
//:: Created By: Preston Watamaniuk
|
//:: Created By: Preston Watamaniuk
|
||||||
//:: Created On: May 14, 2000
|
//:: Created On: May 14, 2000
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
#include "prc_inc_spells"
|
#include "prc_inc_spells"
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage = GetHitDice(OBJECT_SELF)/5;
|
object oNPC = OBJECT_SELF;
|
||||||
if (nDamage == 0)
|
object oTarget;
|
||||||
{
|
|
||||||
nDamage = 1;
|
int nHD = GetHitDice(oNPC);
|
||||||
}
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
int nDamage = nHD/5;
|
||||||
|
|
||||||
|
if (nDamage == 0) {nDamage = 1;}
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
|
|
||||||
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
|
||||||
|
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(oTarget != OBJECT_SELF)
|
if(oTarget != oNPC)
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_ABILITY_DRAIN_STRENGTH));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_STRENGTH));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay))
|
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
|
||||||
{
|
{
|
||||||
//Set the Ability mod and change to supernatural effect
|
//Set the Ability mod and change to supernatural effect
|
||||||
eHowl = EffectAbilityDecrease(ABILITY_STRENGTH, nDamage);
|
eHowl = EffectAbilityDecrease(ABILITY_STRENGTH, nDamage);
|
||||||
@@ -53,8 +61,8 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Get first target in spell area
|
//Get next target in spell area
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,15 +14,23 @@
|
|||||||
//:: Created By: Preston Watamaniuk
|
//:: Created By: Preston Watamaniuk
|
||||||
//:: Created On: Jan 8, 2002
|
//:: Created On: Jan 8, 2002
|
||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
#include "prc_inc_spells"
|
#include "prc_inc_spells"
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
|
object oNPC = OBJECT_SELF;
|
||||||
|
object oTarget;
|
||||||
|
|
||||||
|
int nHD = GetHitDice(oNPC);
|
||||||
|
int nSTRMod = GetAbilityModifier(ABILITY_STRENGTH, oNPC);
|
||||||
|
int nDC = 10 +nSTRMod+ (nHD/2);
|
||||||
|
|
||||||
effect eDown = EffectKnockdown();
|
effect eDown = EffectKnockdown();
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_WIND);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_WIND);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
||||||
int nDamage = GetHitDice(OBJECT_SELF) /2;
|
int nDamage = GetHitDice(OBJECT_SELF) /2;
|
||||||
effect eDam;
|
effect eDam;
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
@@ -33,7 +41,7 @@ void main()
|
|||||||
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
||||||
{
|
{
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 14))
|
if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC))
|
||||||
{
|
{
|
||||||
//Apply the VFX impact and effects
|
//Apply the VFX impact and effects
|
||||||
|
|
||||||
@@ -42,6 +50,6 @@ void main()
|
|||||||
}
|
}
|
||||||
//Get next target in spell area
|
//Get next target in spell area
|
||||||
}
|
}
|
||||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
//:: Pulse: Wisdom Drain
|
//:: Pulse: Wisdom Drain
|
||||||
//:: NW_S1_PulsDeath
|
//:: NW_S1_PulsWisDr
|
||||||
//:: Copyright (c) 2001 Bioware Corp.
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
/*
|
/*
|
||||||
@@ -12,35 +12,40 @@
|
|||||||
//:: Created By: Preston Watamaniuk
|
//:: Created By: Preston Watamaniuk
|
||||||
//:: Created On: May 14, 2000
|
//:: Created On: May 14, 2000
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
|
#include "NW_I0_SPELLS"
|
||||||
#include "prc_inc_spells"
|
#include "prc_inc_spells"
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Declare major variables
|
//:: Declare major variables
|
||||||
int nDamage = GetHitDice(OBJECT_SELF)/5;
|
object oNPC = OBJECT_SELF;
|
||||||
if (nDamage == 0)
|
object oTarget;
|
||||||
{
|
|
||||||
nDamage = 1;
|
int nHD = GetHitDice(oNPC);
|
||||||
}
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
||||||
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
||||||
|
|
||||||
|
int nDamage = nHD/5;
|
||||||
|
|
||||||
|
if (nDamage == 0) {nDamage = 1;}
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
int nHD = GetHitDice(OBJECT_SELF);
|
|
||||||
int nDC = 10 + nHD;
|
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||||
effect eHowl;
|
effect eHowl;
|
||||||
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
|
||||||
//Get first target in spell area
|
//Get first target in spell area
|
||||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF));
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
|
||||||
{
|
{
|
||||||
//Fire cast spell at event for the specified target
|
//Fire cast spell at event for the specified target
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_ABILITY_DRAIN_WISDOM));
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_WISDOM));
|
||||||
//Determine effect delay
|
//Determine effect delay
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
||||||
//Make a saving throw check
|
//Make a saving throw check
|
||||||
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, OBJECT_SELF, fDelay))
|
if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay))
|
||||||
{
|
{
|
||||||
//Set the Ability mod and change to supernatural effect
|
//Set the Ability mod and change to supernatural effect
|
||||||
eHowl = EffectAbilityDecrease(ABILITY_WISDOM, nDamage);
|
eHowl = EffectAbilityDecrease(ABILITY_WISDOM, nDamage);
|
||||||
|
|||||||
Binary file not shown.
@@ -77057,15 +77057,15 @@ Tortoise shell slows a creature's movement as if it were wearing heavy armor. An
|
|||||||
<entry id="213318" lang="en" sex="m">Tortoise Shell (18)</entry>
|
<entry id="213318" lang="en" sex="m">Tortoise Shell (18)</entry>
|
||||||
<entry id="213319" lang="en" sex="m">Sanctify Ki Strike</entry>
|
<entry id="213319" lang="en" sex="m">Sanctify Ki Strike</entry>
|
||||||
<entry id="213320" lang="en" sex="m">Type of Feat: Exalted
|
<entry id="213320" lang="en" sex="m">Type of Feat: Exalted
|
||||||
Prerequisite: Improved Unarmed Strike, CHA 15, Ki strike
|
Prerequisite: Improved Unarmed Strike, CHA 15, Ki strike, Good alignment.
|
||||||
Specifics: A Your unarmed strikes deal 1 extra point of damage to evil creatures, or 1d4 points to evil outsiders and evil undead. In addition, they are considered good-aligned for purposes of overcoming damage reduction.</entry>
|
Specifics: A Your unarmed strikes deal 1 extra point of damage to evil creatures, or 1d4 points to evil outsiders and evil undead. In addition, they are considered good-aligned for purposes of overcoming damage reduction.</entry>
|
||||||
<entry id="213321" lang="en" sex="m">Holy Ki Strike</entry>
|
<entry id="213321" lang="en" sex="m">Holy Ki Strike</entry>
|
||||||
<entry id="213322" lang="en" sex="m">Type of Feat: Exalted
|
<entry id="213322" lang="en" sex="m">Type of Feat: Exalted
|
||||||
Prerequisite: Improved Unarmed Strike, CHA 15, Ki strike, Sanctify Ki Strike
|
Prerequisite: Improved Unarmed Strike, CHA 15, Ki strike, Sanctify Ki Strike, good alignment
|
||||||
Specifics: Your unarmed strike deals 2d6 points of extra holy damage to evil creatures. In addition, it is considered holy, which means that it can bypass the damage reduction of some evil outsiders. This does not stack with the extra damage from the Sanctify Ki Strike feat.</entry>
|
Specifics: Your unarmed strike deals 2d6 points of extra holy damage to evil creatures. In addition, it is considered holy, which means that it can bypass the damage reduction of some evil outsiders. This does not stack with the extra damage from the Sanctify Ki Strike feat.</entry>
|
||||||
<entry id="213323" lang="en" sex="m">Fist of the Heavens</entry>
|
<entry id="213323" lang="en" sex="m">Fist of the Heavens</entry>
|
||||||
<entry id="213324" lang="en" sex="m">Type of Feat: Exalted
|
<entry id="213324" lang="en" sex="m">Type of Feat: Exalted
|
||||||
Prerequisite: Improved Unarmed Strike, WIS 15, Sanctify Ki Strike
|
Prerequisite: Improved Unarmed Strike, WIS 15, Sanctify Ki Strike, good alignment
|
||||||
Specifics: The saving throw DC of your Stunning Fist increases by 2 when you use it against an evil creature. If the stunning attack succeeds, the creature is staggered for 1 round following the round it is stunned.</entry>
|
Specifics: The saving throw DC of your Stunning Fist increases by 2 when you use it against an evil creature. If the stunning attack succeeds, the creature is staggered for 1 round following the round it is stunned.</entry>
|
||||||
<entry id="213325" lang="en" sex="m">Vow of Abstinence</entry>
|
<entry id="213325" lang="en" sex="m">Vow of Abstinence</entry>
|
||||||
<entry id="213326" lang="en" sex="m">Type of Feat: Exalted
|
<entry id="213326" lang="en" sex="m">Type of Feat: Exalted
|
||||||
|
|||||||
Reference in New Issue
Block a user