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:
Jaysyn904
2026-04-27 10:31:20 -04:00
parent b5be848a4e
commit f397206b74
54 changed files with 2062 additions and 1774 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -21,8 +21,42 @@ void MindStab(object oPC, object oTarget);
// --------------- // ---------------
// BEGIN FUNCTIONS // BEGIN FUNCTIONS
// --------------- // ---------------
void SweepingStrike(object oCaster, object oTarget) 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)
{ {
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);
@@ -77,3 +111,5 @@ void MindStab(object oPC, object oTarget)
DeleteLocalInt(oPC, "MindStabDur"); DeleteLocalInt(oPC, "MindStabDur");
//DelayCommand(0.33, AssignCommand(oPC, ActionAttack(oTarget))); //DelayCommand(0.33, AssignCommand(oPC, ActionAttack(oTarget)));
} }
//void main (){}

View File

@@ -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);
} }

View File

@@ -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;

View File

@@ -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);
} }

View File

@@ -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();

View File

@@ -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

View File

@@ -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))

View File

@@ -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

View File

@@ -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)

View File

@@ -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))
{ {

View File

@@ -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));

View File

@@ -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))
{ {

View File

@@ -18,14 +18,18 @@
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))
{ {

View File

@@ -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))
{ {

View File

@@ -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;
} }

View File

@@ -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();
eBolt = GetScaledEffect(eBolt, oTarget);
effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED);
eBolt = GetScaledEffect(eBolt, oTarget);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eBolt, eDur);
eLink = EffectLinkEffects(eLink, eVis2);
int nDC = 10 + (nHD/2); int nHD = GetHitDice(oNPC);
int nCount = (nHD + 1) / 2; int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
nCount = PRCGetScaledDuration(nCount, oTarget); int nDC = 10 +nCHAMod+ (nHD/2);
int nCount = (nHD + 1) / 2;
if (nCount == 0) { nCount = 1; }
nCount = GetScaledDuration(nCount, oTarget);
effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S);
effect eBolt = EffectDominated();
eBolt = GetScaledEffect(eBolt, oTarget);
effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED);
eBolt = GetScaledEffect(eBolt, oTarget);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eBolt, eDur);
eLink = EffectLinkEffects(eLink, eVis2);
//Fire cast spell at event for the specified target //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))
{ {

View File

@@ -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

View File

@@ -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))
{ {

View File

@@ -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))
{ {

View File

@@ -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);
} }

View File

@@ -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))
{ {

View File

@@ -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();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eBolt, eDur);
eLink = EffectLinkEffects(eLink, eVis);
int nDC = 10 + (nHD/2); int nHD = GetHitDice(oNPC);
int nCount = (nHD + 1) / 2; int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
nCount = PRCGetScaledDuration(nCount, oTarget); int nDC = 10 +nCHAMod+ (nHD/2);
int nCount = (nHD + 1) / 2;
if (nCount == 0) { nCount = 1; }
nCount = GetScaledDuration(nCount, oTarget);
effect eVis = EffectVisualEffect(VFX_DUR_PARALYZED);
effect eBolt = EffectParalyze();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eBolt, eDur);
eLink = EffectLinkEffects(eLink, eVis);
//Fire cast spell at event for the specified target //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))
{ {

View File

@@ -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.

View File

@@ -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 eBolt;
int nDC = 10 + (nHD/2); int nHD = GetHitDice(oNPC);
int nCount = nHD /2; int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
if (nCount == 0) int nDC = 10 +nCHAMod+ (nHD/2);
{ int nCount = (nHD + 1) / 2;
nCount = 1; if (nCount == 0) { nCount = 1; }
} int nDamage = d6(nCount);
effect eBolt;
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

View File

@@ -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))
{ {

View File

@@ -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

View File

@@ -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))
{ {

View File

@@ -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))
{ {

View File

@@ -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))
{ {

View File

@@ -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)

View File

@@ -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;
location lTargetLocation = PRCGetSpellTargetLocation(); //Calculate the damage
object oTarget; for (nLoop; nLoop > 0; nLoop--)
{
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);

View File

@@ -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))

View File

@@ -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);

View File

@@ -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));

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -15,32 +15,38 @@
void main() void main()
{ {
//Declare major variables //:: Declare major variables
int nDamage; object oNPC = OBJECT_SELF;
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); object oTarget;
effect eHowl = EffectVisualEffect(VFX_IMP_PULSE_COLD);
DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eHowl, GetLocation(OBJECT_SELF))); int nHD = GetHitDice(oNPC);
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
int nDC = 10 +nCHAMod+ (nHD/2);
int nDamage;
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_CHEST);
effect eHowl = EffectVisualEffect(VFX_IMP_PULSE_COLD);
DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eHowl, GetLocation(oNPC)));
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));
} }
} }

View File

@@ -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

View File

@@ -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));
} }
} }

View File

@@ -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);

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -16,13 +16,20 @@
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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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);

View File

@@ -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