2025/12/24 Update

Hooked up new GUI module event.
Updated PRC8 includes.
Updated "_removed".
Updated nasher.cfg
This commit is contained in:
Jaysyn904
2025-12-24 15:20:02 -05:00
parent 32fd183ca0
commit 42894064d8
197 changed files with 25660 additions and 1516 deletions

View File

@@ -231,9 +231,16 @@ description = "PRC8 version of C2 - The Ghost Tower of Inverness."
filter = "prc_nui_sc_inc.nss" filter = "prc_nui_sc_inc.nss"
filter = "prc_nui_scd_inc.nss" filter = "prc_nui_scd_inc.nss"
filter = "prc_nui_consts.nss" filter = "prc_nui_consts.nss"
filter = "nw_inc_nui" filter = "nw_inc_nui.nss"
filter = "xchst_inc.nss" filter = "xchst_inc.nss"
filter = "prc_nui_sbd_inc.nss"
filter = "prc_nui_sb_inc.nss"
filter = "prc_nui_lv_inc.nss"
filter = "prc_nui_com_inc.nss"
filter = "prc_inc_size.nss"
filter = "prc_inc_json.nss"
filter = "prc_inc_gff.nss"
filter = "inc_infusion.nss"
[target] [target]
name = "abysshak" name = "abysshak"
file = "aby01_ele_fancy.hak" file = "aby01_ele_fancy.hak"
@@ -462,8 +469,15 @@ description = "PRC8 merge hakpak for PRC8 version of C2 - The Ghost Tower of Inv
filter = "prc_nui_sc_inc.nss" filter = "prc_nui_sc_inc.nss"
filter = "prc_nui_scd_inc.nss" filter = "prc_nui_scd_inc.nss"
filter = "prc_nui_consts.nss" filter = "prc_nui_consts.nss"
filter = "nw_inc_nui" filter = "nw_inc_nui.nss"
filter = "xchst_inc.nss" filter = "xchst_inc.nss"
filter = "prc_nui_sbd_inc.nss"
filter = "prc_nui_sb_inc.nss"
filter = "prc_nui_lv_inc.nss"
filter = "prc_nui_com_inc.nss"
filter = "prc_inc_size.nss"
filter = "prc_inc_json.nss"
filter = "prc_inc_gff.nss"
filter = "inc_infusion.nss"
[target.rules] [target.rules]
"*" = "src/hakpak/ghost_prc8_top/$ext" "*" = "src/hakpak/ghost_prc8_top/$ext"

View File

@@ -0,0 +1,28 @@
//::///////////////////////////////////////////////
//:: Summon Animal Companion
//:: NW_S2_AnimalComp
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spell summons a Druid's animal companion
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 27, 2001
//:://////////////////////////////////////////////
void main()
{
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
//Spell fails if caster is underwater.
if (nInt == 1)
{
FloatingTextStringOnCreature("You cannot summon your companion underwater!", oPC);
}
if (nInt != 1)
{
//Summons companion if PC is on land.
SummonAnimalCompanion();
}
}

View File

@@ -0,0 +1,28 @@
//::///////////////////////////////////////////////
//:: Summon Familiar
//:: NW_S2_Familiar
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spell summons an Arcane casters familiar
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 27, 2001
//:://////////////////////////////////////////////
void main()
{
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
//Spell fails if caster is underwater.
if (nInt == 1)
{
FloatingTextStringOnCreature("You cannot summon your familiar underwater!", oPC);
}
if (nInt != 1)
{
//Summons companion if PC is on land.
SummonFamiliar();
}
}

View File

@@ -0,0 +1,112 @@
//::///////////////////////////////////////////////
//:: Burning Hands
//:: NW_S0_BurnHand
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// A thin sheet of searing flame shoots from your
// outspread fingertips. You must hold your hands
// with your thumbs touching and your fingers spread
// The sheet of flame is about as thick as your thumbs.
// Any creature in the area of the flames suffers
// 1d4 points of fire damage per your caster level
// (maximum 5d4).
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 5, 2001
//:://////////////////////////////////////////////
//:: Last Updated On: April 5th, 2001
//:: VFX Pass By: Preston W, On: June 20, 2001
//:: Update Pass By: Preston W, On: July 23, 2001
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell will fail if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Burning Hands' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
float fDist;
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
object oTarget;
effect eFire;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
//Limit Maximum caster level to keep damage to spell specifications.
if (nCasterLevel > 5)
{
nCasterLevel = 5;
}
//Cycle through the targets within the spell shape until an invalid object is captured.
if (nInt != 1)
{
//Declare the spell shape, size and the location. Capture the first target object in the shape.
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, GetSpellTargetLocation(), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Signal spell cast at event to fire.
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_BURNING_HANDS));
//Calculate the delay time on the application of effects based on the distance
//between the caster and the target
fDist = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
//Make SR check, and appropriate saving throw.
if(!MyResistSpell(OBJECT_SELF, oTarget, fDist) && oTarget != OBJECT_SELF)
{
nDamage = d4(nCasterLevel);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 4 * nCasterLevel;//Damage is at max
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
//Run the damage through the various reflex save and evasion feats
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
eFire = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
DelayCommand(fDist, ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget));
DelayCommand(fDist, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, GetSpellTargetLocation(), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
}
}

View File

@@ -0,0 +1,166 @@
//::///////////////////////////////////////////////
//:: Call Lightning
//:: NW_S0_CallLghtn.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spells smites an area around the caster
with bolts of lightning which strike all enemies.
Bolts do 1d10 per level up 10d10
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 22, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 20, 2001
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
object oCaster = OBJECT_SELF;
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 10)
{
nCasterLvl = 10;
}
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Call Lightning' will not work underwater!", oPC);
return;
}
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetRandomDelay(0.4, 1.75);
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
//Roll damage for each target
nDamage = d6(nCasterLvl);
//Resolve metamagic
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLvl;
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + nDamage / 2;
}
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ELECTRICITY);
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Call Lightning' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,255 @@
//::///////////////////////////////////////////////
//:: Chain Lightning
//:: NW_S0_ChLightn
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
The primary target is struck with 1d6 per caster,
1/2 with a reflex save. 1 secondary target per
level is struck for 1d6 / 2 caster levels. No
repeat targets can be chosen.
*/
//:://////////////////////////////////////////////
//:: Created By: Brennon Holmes
//:: Created On: March 8, 2001
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 26, 2001
//:: Update Pass By: Preston W, On: July 26, 2001
/*
bugfix by Kovi 2002.07.28
- successful saving throw and (improved) evasion was ignored for
secondary targets,
- all secondary targets suffered exactly the same damage
2002.08.25
- primary target was not effected
*/
#include "x0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
int nDoOnce = 0;
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nDamage = d6(nCasterLevel);
int nDamStrike;
int nNumAffected = 0;
int nMetaMagic = GetMetaMagicFeat();
//Declare lightning effect connected the casters hands
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF, BODY_NODE_HAND);;
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
effect eDamage;
object oFirstTarget = GetSpellTargetObject();
object oHolder;
object oTarget;
location lSpellLocation;
//Limit caster level
if (nCasterLevel > 20)
{
nCasterLevel = 20;
}
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/is +50%
}
//Damage the initial target
if (spellsIsTarget(oFirstTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oFirstTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CHAIN_LIGHTNING));
//Make an SR Check
if (!MyResistSpell(OBJECT_SELF, oFirstTarget))
{
//Adjust damage via Reflex Save or Evasion or Improved Evasion
nDamStrike = GetReflexAdjustedDamage(nDamage, oFirstTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ELECTRICITY);
//Set the damage effect for the first target
eDamage = EffectDamage(nDamStrike, DAMAGE_TYPE_ELECTRICAL);
//Apply damage to the first target and the VFX impact.
if(nDamStrike > 0)
{
//Apply the VFX impact and damage effect (reflected upon PC)
if ((nInt == 1)&&(nDoOnce != 1))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oCaster);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oCaster);
FloatingTextStringOnCreature("The spell 'Chain Lightning' is reflected underwater!", oPC);
nDoOnce = 1;
}
ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oFirstTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oFirstTarget);
}
}
}
//Apply the lightning stream effect to the first target, connecting it with the caster
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oFirstTarget,0.5);
//Reinitialize the lightning effect so that it travels from the first target to the next target
eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oFirstTarget, BODY_NODE_CHEST);
float fDelay = 0.2;
int nCnt = 0;
// *
// * Secondary Targets
// *
//Get the first target in the spell shape
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oFirstTarget), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
while (GetIsObjectValid(oTarget) && nCnt < nCasterLevel)
{
//Make sure the caster's faction is not hit and the first target is not hit
if (oTarget != oFirstTarget && spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
{
//Connect the new lightning stream to the older target and the new target
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5));
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CHAIN_LIGHTNING));
//Do an SR check
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
nDamage = d6(nCasterLevel) ;
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/is +50%
}
//Adjust damage via Reflex Save or Evasion or Improved Evasion
nDamStrike = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ELECTRICITY);
//Apply the damage and VFX impact to the current target
eDamage = EffectDamage(nDamStrike /2, DAMAGE_TYPE_ELECTRICAL);
if(nDamStrike > 0) //age > 0)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget));
}
}
oHolder = oTarget;
//change the currect holder of the lightning stream to the current target
if (GetObjectType(oTarget) == OBJECT_TYPE_CREATURE)
{
eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oHolder, BODY_NODE_CHEST);
}
else
{
// * April 2003 trying to make sure beams originate correctly
effect eNewLightning = EffectBeam(VFX_BEAM_LIGHTNING, oHolder, BODY_NODE_CHEST);
if(GetIsEffectValid(eNewLightning))
{
eLightning = eNewLightning;
}
}
fDelay = fDelay + 0.1f;
}
//Count the number of targets that have been hit.
if(GetObjectType(oTarget) == OBJECT_TYPE_CREATURE)
{
nCnt++;
}
// April 2003: Setting the new origin for the beam
// oFirstTarget = oTarget;
//Get the next target in the shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oFirstTarget), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Chain Lightning' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,100 @@
//::///////////////////////////////////////////////
//:: Cone of Cold
//:: NW_S0_ConeCold
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Cone of cold creates an area of extreme cold,
// originating at your hand and extending outward
// in a cone. It drains heat, causing 1d6 points of
// cold damage per caster level (maximum 15d6).
*/
//:://////////////////////////////////////////////
//:: Created By: Noel Borstad
//:: Created On: 10/18/02000
//:://////////////////////////////////////////////
//:: Last Updated By: Aidan Scanlan On: April 11, 2001
//:: Update Pass By: Preston W, On: July 25, 2001
float SpellDelay (object oTarget, int nShape);
#include "X0_I0_SPELLS"
void main()
{
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
float fDelay;
location lTargetLocation = GetSpellTargetLocation();
object oTarget;
//Limit Caster level for the purposes of damage.
if (nCasterLevel > 15)
{
nCasterLevel = 15;
}
//Declare the spell shape, size and the location. Capture the first target object in the shape.
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
// March 2003. Removed this as part of the reputation pass
// if((GetSpellId() == 340 && !GetIsFriend(oTarget)) || GetSpellId() == 25)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CONE_OF_COLD));
//Get the distance between the target and caster to delay the application of effects
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20.0;
//Make SR check, and appropriate saving throw(s).
if(!MyResistSpell(OBJECT_SELF, oTarget, fDelay) && (oTarget != OBJECT_SELF))
{
//Detemine damage
nDamage = d6(nCasterLevel);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
//Adjust damage according to Reflex Save, Evasion or Improved Evasion
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_COLD);
// Apply effects to the currently selected target.
effect eCold = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
effect eVis = EffectVisualEffect(VFX_IMP_FROST_L);
if(nDamage > 0)
{
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCold, oCaster));
FloatingTextStringOnCreature("The spell 'Cone of Cold' is reflected underwater!", oPC);
}
//Apply delayed effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCold, oTarget));
}
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
// TK added for cheat casting
if (GetLocalInt(OBJECT_SELF, "AI_CHEAT_CASTING"))
{
// shades = 158
DecrementRemainingSpellUses(OBJECT_SELF, 158);
DeleteLocalInt(OBJECT_SELF, "AI_CHEAT_CASTING");
}
}

View File

@@ -0,0 +1,132 @@
//::///////////////////////////////////////////////
//:: Delayed Blast Fireball
//:: NW_S0_DelFirebal.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
The caster creates a trapped area which detects
the entrance of enemy creatures into 3 m area
around the spell location. When tripped it
causes a fiery explosion that does 1d6 per
caster level up to a max of 20d6 damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: July 27, 2001
//:://////////////////////////////////////////////
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Delayed Blast Fireball' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables including Area of Effect Object
effect eAOE = EffectAreaOfEffect(AOE_PER_DELAY_BLAST_FIREBALL);
location lTarget = GetSpellTargetLocation();
int nDuration = GetCasterLevel(OBJECT_SELF) / 2;
//Create an instance of the AOE Object using the Apply Effect function
if (nInt != 1)
{
//Make sure the duration is at least one round
if (nDuration == 0)
{
nDuration = 1;
}
int nMetaMagic = GetMetaMagicFeat();
//Check Extend metamagic feat.
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2;//Duration is +100%
}
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(nDuration));
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Delayed Blast Fireball' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,70 @@
//::///////////////////////////////////////////////
//:: Elemental Swarm
//:: NW_S0_EleSwarm.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spell creates a conduit from the caster
to the elemental planes. The first elemental
summoned is a 24 HD Air elemental. Whenever an
elemental dies it is replaced by the next
elemental in the chain Air, Earth, Water, Fire
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12, 2001
//:://////////////////////////////////////////////
//:: Update Pass By: Preston W, On: July 30, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nMetaMagic = GetMetaMagicFeat();
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nDuration = GetCasterLevel(OBJECT_SELF);
nDuration = 24;
effect eSummon;
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
//Check for metamagic duration
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration * 2; //Duration is +100%
}
//Set the summoning effect
eSummon = EffectSwarm(FALSE, "NW_SW_AIRGREAT", "NW_SW_WATERGREAT","NW_SW_EARTHGREAT","NW_SW_FIREGREAT");
//Spell fails if caster is underwater.
if (nInt == 1)
{
eSummon = EffectSwarm(FALSE, "NW_SW_WATERGREAT", "NW_SW_WATERGREAT","NW_SW_WATERGREAT","NW_SW_WATERGREAT");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSummon, OBJECT_SELF, HoursToSeconds(nDuration));
}
//Apply the summon effect
if (nInt != 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSummon, OBJECT_SELF, HoursToSeconds(nDuration));
}
}

View File

@@ -0,0 +1,175 @@
//::///////////////////////////////////////////////
//:: Fireball
//:: NW_S0_Fireball
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// A fireball is a burst of flame that detonates with
// a low roar and inflicts 1d6 points of damage per
// caster level (maximum of 10d6) to all creatures
// within the area. Unattended objects also take
// damage. The explosion creates almost no pressure.
*/
//:://////////////////////////////////////////////
//:: Created By: Noel Borstad
//:: Created On: Oct 18 , 2000
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 6, 2001
//:: Last Updated By: AidanScanlan, On: April 11, 2001
//:: Last Updated By: Preston Watamaniuk, On: May 25, 2001
#include "nw_i0_2q4luskan"
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nUA = GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nUA == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Fireball' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 10)
{
nCasterLvl = 10;
}
//Apply the fireball explosion at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if((GetSpellId() == 341) || GetSpellId() == 58)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
//Roll damage for each target
nDamage = d6(nCasterLvl);
//Resolve metamagic
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLvl;
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + nDamage / 2;
}
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Fireball' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,174 @@
//::///////////////////////////////////////////////
//:: Fire Storm
//:: NW_S0_FireStm
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates a zone of destruction around the caster
within which all living creatures are pummeled
with fire.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 11, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 21, 2001
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Fire Storm' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nMetaMagic;
int nDamage;
int nDamage2;
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
if(nCasterLevel > 20)
{
nCasterLevel == 20;
}
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eFireStorm = EffectVisualEffect(VFX_FNF_FIRESTORM);
float fDelay;
//Normal spell effects.
if (nInt != 1)
{
//Apply Fire and Forget Visual in the area;
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFireStorm, GetLocation(OBJECT_SELF));
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF), OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while(GetIsObjectValid(oTarget))
{
//This spell smites everyone who is more than 2 meters away from the caster.
//if (GetDistanceBetween(oTarget, OBJECT_SELF) > 2.0)
//{
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
{
fDelay = GetRandomDelay(1.5, 2.5);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIRE_STORM));
//Make SR check, and appropriate saving throw(s).
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
//Roll Damage
nDamage = d6(nCasterLevel);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2);//Damage/Healing is +50%
}
//Save versus both holy and fire damage
nDamage2 = GetReflexAdjustedDamage(nDamage/2, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_DIVINE);
nDamage = GetReflexAdjustedDamage(nDamage/2, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
if(nDamage > 0)
{
// Apply effects to the currently selected target. For this spell we have used
//both Divine and Fire damage.
effect eDivine = EffectDamage(nDamage2, DAMAGE_TYPE_DIVINE);
effect eFire = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDivine, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF), OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Fire Storm' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,111 @@
//::///////////////////////////////////////////////
//:: Flame Arrow
//:: NW_S0_FlmArrow
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Fires a stream of fiery arrows at the selected
target that do 4d6 damage per arrow. 1 Arrow
per 4 levels is created.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 20, 2001
//:: Updated By: Georg Zoeller, Aug 18 2003: Uncapped
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Flame Arrow' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables ( fDist / (3.0f * log( fDist ) + 2.0f) )
object oTarget = GetSpellTargetObject();
int nCasterLvl = GetCasterLevel(OBJECT_SELF);
int nDamage = 0;
int nMetaMagic = GetMetaMagicFeat();
int nCnt;
effect eMissile;
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
int nMissiles = (nCasterLvl)/4;
float fDist = GetDistanceBetween(OBJECT_SELF, oTarget);
float fDelay = fDist/(3.0 * log(fDist) + 2.0);
//Limit missiles to five
if(nMissiles == 0)
{
nMissiles = 1;
}
/* Uncapped because PHB does list any cap and we now got epic levels
else if (nMissiles > 5)
{
nMissiles = 5;
}*/
//Normal spell effects.
if (nInt != 1)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FLAME_ARROW));
//Apply a single damage hit for each missile instead of as a single mass
//Make SR Check
for (nCnt = 1; nCnt <= nMissiles; nCnt++)
{
if(!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
//Roll damage
int nDam = d6(4) + 1;
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDam = 24;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDam = nDam + nDam/2; //Damage/Healing is +50%
}
nDam = GetReflexAdjustedDamage(nDam, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
//Set damage effect
effect eDam = EffectDamage(nDam, DAMAGE_TYPE_FIRE);
//Apply the MIRV and damage effect
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget));
}
// * May 2003: Make it so the arrow always appears, even if resisted
eMissile = EffectVisualEffect(VFX_IMP_MIRV_FLAME);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget);
}
}
}
}

View File

@@ -0,0 +1,91 @@
//::///////////////////////////////////////////////
//:: Flame Lash
//:: NW_S0_FlmLash.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates a whip of fire that targets a single
individual
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 21, 2001
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Flame Lash' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oTarget = GetSpellTargetObject();
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nMetaMagic = GetMetaMagicFeat();
if(nCasterLevel > 3)
{
nCasterLevel = (nCasterLevel-3)/2;
}
int nDamage = d6(2 + nCasterLevel);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * (2 + nCasterLevel);//Damage is at max
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
//Normal spell effects.
if (nInt != 1)
{
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
effect eRay = EffectBeam(VFX_BEAM_FIRE_LASH, OBJECT_SELF, BODY_NODE_HAND);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7);
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FLAME_LASH));
if (!MyResistSpell(OBJECT_SELF, oTarget, 1.0))
{
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
if(nDamage > 0)
{
//Apply the VFX impact and effects
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
}
}
}
}
}

View File

@@ -0,0 +1,177 @@
//::///////////////////////////////////////////////
//:: Flame Strike
//:: NW_S0_FlmStrike
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// A flame strike is a vertical column of divine fire
// roaring downward. The spell deals 1d6 points of
// damage per level, to a maximum of 15d6. Half the
// damage is fire damage, but the rest of the damage
// results directly from divine power and is therefore
// not subject to protection from elements (fire),
// fire shield (chill shield), etc.
*/
//:://////////////////////////////////////////////
//:: Created By: Noel Borstad
//:: Created On: Oct 19, 2000
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 20, 2001
//:: Update Pass By: Preston W, On: Aug 1, 2001
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Flame Strike' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oTarget;
int nCasterLvl = GetCasterLevel(OBJECT_SELF);
int nDamage, nDamage2;
int nMetaMagic = GetMetaMagicFeat();
effect eStrike = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
effect eHoly;
effect eFire;
//Limit caster level for the purposes of determining damage.
if (nCasterLvl > 15)
{
nCasterLvl = 15;
}
if (nInt != 1)
{
//Declare the spell shape, size and the location. Capture the first target object in the shape.
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetSpellTargetLocation(), FALSE, OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE|OBJECT_TYPE_DOOR);
//Apply the location impact visual to the caster location instead of caster target creature.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, GetSpellTargetLocation());
//Cycle through the targets within the spell shape until an invalid object is captured.
while ( GetIsObjectValid(oTarget) )
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FLAME_STRIKE));
//Make SR check, and appropriate saving throw(s).
if (!MyResistSpell(OBJECT_SELF, oTarget, 0.6))
{
nDamage = d6(nCasterLvl);
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLvl;
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2);
}
//Adjust the damage based on Reflex Save, Evasion and Improved Evasion
nDamage2 = GetReflexAdjustedDamage(nDamage/2, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_DIVINE);
nDamage = GetReflexAdjustedDamage(nDamage/2, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
//Make a faction check so that only enemies receieve the full brunt of the damage.
if(!GetIsFriend(oTarget))
{
eHoly = EffectDamage(nDamage2,DAMAGE_TYPE_DIVINE);
DelayCommand(0.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHoly, oTarget));
}
// Apply effects to the currently selected target.
eFire = EffectDamage(nDamage,DAMAGE_TYPE_FIRE);
if(nDamage > 0)
{
DelayCommand(0.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget));
DelayCommand(0.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM,GetSpellTargetLocation(), FALSE, OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE|OBJECT_TYPE_DOOR);
}
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Flame Strike' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,171 @@
//::///////////////////////////////////////////////
//:: Ice Storm
//:: NW_S0_IceStorm
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Everyone in the area takes 3d6 Bludgeoning
and 2d6 Cold damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 12, 2001
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
int nDamage, nDamage2, nDamage3;
int nVariable = nCasterLvl/3;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_ICESTORM); //USE THE ICESTORM FNF
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
effect eDam,eDam2, eDam3;
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Apply the ice storm VFX at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
fDelay = GetRandomDelay(0.75, 2.25);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_ICE_STORM));
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
//Roll damage for each target
nDamage = d6(3);
nDamage2 = d6(2);
nDamage3 = d6(nVariable);
//Resolve metamagic
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 18;
nDamage2 = 12;
nDamage3 = 6 * nVariable;
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage / 2);
nDamage2 = nDamage2 + (nDamage2 / 2);
nDamage3 = nDamage3 + (nDamage3 / 2);
}
nDamage2 = nDamage2 + nDamage3;
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING);
eDam2 = EffectDamage(nDamage2, DAMAGE_TYPE_COLD);
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
//Apply the ice storm VFX at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, GetLocation(oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oCaster));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the impact that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster));
FloatingTextStringOnCreature("The spell 'Ice Storm' is reflected underwater!", oPC);
}
// Apply effects to the currently selected target.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the impact that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Ice Storm' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,131 @@
//::///////////////////////////////////////////////
//:: Implosion
//:: NW_S0_Implosion.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
All persons within a 5ft radius of the spell must
save at +3 DC or die.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 13, 2001
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
object oTarget;
effect eDeath = EffectDeath(TRUE);
eDeath = SupernaturalEffect(eDeath);
effect eImplode= EffectVisualEffect(VFX_FNF_IMPLOSION);
float fDelay;
//Apply the implose effect
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImplode, GetSpellTargetLocation());
//Get the first target in the shape
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetSpellTargetLocation());
while (GetIsObjectValid(oTarget))
{
if (oTarget != OBJECT_SELF && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_IMPLOSION));
fDelay = GetRandomDelay(0.4, 1.2);
//Make SR check
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
//Make Reflex save
if(!MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC()+3, SAVING_THROW_TYPE_DEATH, OBJECT_SELF, fDelay))
{
//Apply death effect and the VFX impact
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget));
}
}
}
//Get next target in the shape
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetSpellTargetLocation());
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Implosion' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,72 @@
//::///////////////////////////////////////////////
//:: Incendiary Cloud
//:: NW_S0_IncCloud.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Person within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables, including the Area of Effect object.
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
effect eAOE = EffectAreaOfEffect(AOE_PER_FOGFIRE);
//Capture the spell target location so that the AoE object can be created.
location lTarget = GetSpellTargetLocation();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eImpact = EffectVisualEffect(260);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Incendiary Cloud' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, lTarget);
if(nDuration < 1)
{
nDuration = 1;
}
int nMetaMagic = GetMetaMagicFeat();
//Check for metamagic extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Create the object at the location so that the objects scripts will start working.
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(nDuration));
}
}

View File

@@ -0,0 +1,81 @@
//::///////////////////////////////////////////////
//:: Incendiary Cloud
//:: NW_S0_IncCloud.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Person within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: March 2003: Removed movement speed penalty
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
effect eDam;
object oTarget;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
// effect eSpeed = EffectMovementSpeedDecrease(50);
effect eVis2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = eVis2; //EffectLinkEffects(eSpeed, eVis2);
float fDelay;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Incendiary Cloud' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
//Capture the first target object in the shape.
oTarget = GetEnteringObject();
//Declare the spell shape, size and the location.
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_INCENDIARY_CLOUD));
//Make SR check, and appropriate saving throw(s).
if(!MyResistSpell(GetAreaOfEffectCreator(), oTarget, fDelay))
{
fDelay = GetRandomDelay(0.5, 2.0);
//Roll damage.
nDamage = d6(4);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 24;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
//Adjust damage for Reflex Save, Evasion and Improved Evasion
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE, GetAreaOfEffectCreator());
// Apply effects to the currently selected target.
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
if(nDamage > 0)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
// ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSpeed, oTarget);
}
}
}

View File

@@ -0,0 +1,65 @@
//::///////////////////////////////////////////////
//:: Incendiary Cloud: On Exit
//:: NW_S0_IncCloudB.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
All creatures within the AoE take 2d6 acid damage
per round and upon entering if they fail a Fort Save
their movement is halved.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: Update Pass By: Preston W, On: July 20, 2001
#include "x2_inc_spellhook"
void main()
{
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Get the object that is exiting the AOE
object oTarget = GetExitingObject();
int bValid = FALSE;
effect eAOE;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Incendiary Cloud' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
if(GetHasSpellEffect(SPELL_INCENDIARY_CLOUD, oTarget))
{
//Search through the valid effects on the target.
eAOE = GetFirstEffect(oTarget);
while (GetIsEffectValid(eAOE) && bValid == FALSE)
{
if (GetEffectCreator(eAOE) == GetAreaOfEffectCreator())
{
if(GetEffectType(eAOE) == EFFECT_TYPE_MOVEMENT_SPEED_DECREASE)
{
//If the effect was created by the Acid_Fog then remove it
if(GetEffectSpellId(eAOE) == SPELL_INCENDIARY_CLOUD)
{
RemoveEffect(oTarget, eAOE);
bValid = TRUE;
}
}
}
//Get next effect on the target
eAOE = GetNextEffect(oTarget);
}
}
}
}

View File

@@ -0,0 +1,93 @@
//::///////////////////////////////////////////////
//:: Incendiary Cloud
//:: NW_S0_IncCloudC.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Objects within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: Updated By: GeorgZ 2003-08-21: Now affects doors and placeables as well
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
effect eDam;
object oTarget;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
float fDelay;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Incendiary Cloud' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
//Capture the first target object in the shape.
//--------------------------------------------------------------------------
// GZ 2003-Oct-15
// When the caster is no longer there, all functions calling
// GetAreaOfEffectCreator will fail. Its better to remove the barrier then
//--------------------------------------------------------------------------
if (!GetIsObjectValid(GetAreaOfEffectCreator()))
{
DestroyObject(OBJECT_SELF);
return;
}
oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Declare the spell shape, size and the location.
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
fDelay = GetRandomDelay(0.5, 2.0);
//Make SR check, and appropriate saving throw(s).
if(!MyResistSpell(GetAreaOfEffectCreator(), oTarget, fDelay))
{
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELL_INCENDIARY_CLOUD));
//Roll damage.
nDamage = d6(4);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 24;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
//Adjust damage for Reflex Save, Evasion and Improved Evasion
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(),SAVING_THROW_TYPE_FIRE, GetAreaOfEffectCreator());
// Apply effects to the currently selected target.
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
if(nDamage > 0)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
}
}

View File

@@ -0,0 +1,181 @@
//::///////////////////////////////////////////////
//:: Lightning Bolt
//:: NW_S0_LightnBolt
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Does 1d6 per level in a 5ft tube for 30m
*/
//:://////////////////////////////////////////////
//:: Created By: Noel Borstad
//:: Created On: March 8, 2001
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: May 2, 2001
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nDoOnce = 0;
int nInt=GetLocalInt(oPC, "Underwater");
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
//Limit caster level
if (nCasterLevel > 10)
{
nCasterLevel = 10;
}
int nDamage;
int nMetaMagic = GetMetaMagicFeat();
//Set the lightning stream to start at the caster's hands
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF, BODY_NODE_HAND);
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
effect eDamage;
object oTarget = GetSpellTargetObject();
location lTarget = GetLocation(oTarget);
object oNextTarget, oTarget2;
float fDelay;
int nCnt = 1;
oTarget2 = GetNearestObject(OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nCnt);
while(GetIsObjectValid(oTarget2) && GetDistanceToObject(oTarget2) <= 30.0)
{
//Get first target in the lightning area by passing in the location of first target and the casters vector (position)
oTarget = GetFirstObjectInShape(SHAPE_SPELLCYLINDER, 30.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF));
while (GetIsObjectValid(oTarget))
{
//Exclude the caster from the damage effects
if (oTarget != OBJECT_SELF && oTarget2 == oTarget)
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_LIGHTNING_BOLT));
//Make an SR check
if (!MyResistSpell(OBJECT_SELF, oTarget))
{
//Roll damage
nDamage = d6(nCasterLevel);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
//Adjust damage based on Reflex Save, Evasion and Improved Evasion
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(),SAVING_THROW_TYPE_ELECTRICITY);
//Set damage effect
eDamage = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
if(nDamage > 0)
{
fDelay = GetSpellEffectDelay(GetLocation(oTarget), oTarget);
//Apply the VFX impact and damage effect (reflected upon PC)
if ((nInt == 1)&&(nDoOnce != 1))
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oCaster));
FloatingTextStringOnCreature("The spell 'Lightning Bolt' is reflected underwater!", oPC);
nDoOnce = 1;
}
//Normal spell effects.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget));
}
}
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,1.0);
//Set the currect target as the holder of the lightning effect
oNextTarget = oTarget;
eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNextTarget, BODY_NODE_CHEST);
}
}
//Get the next object in the lightning cylinder
oTarget = GetNextObjectInShape(SHAPE_SPELLCYLINDER, 30.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF));
}
nCnt++;
oTarget2 = GetNearestObject(OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nCnt);
}
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Lightning Bolt' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,167 @@
//::///////////////////////////////////////////////
//:: Meteor Swarm
//:: NW_S0_MetSwarm
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Everyone in a 50ft radius around the caster
takes 20d6 fire damage. Those within 6ft of the
caster will take no damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 24 , 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 22, 2001
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic;
int nDamage;
effect eFire;
effect eMeteor = EffectVisualEffect(VFX_FNF_METEOR_SWARM);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Meteor Swarm' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
//Apply the meteor swarm VFX area impact
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eMeteor, GetLocation(OBJECT_SELF));
//Get first object in the spell area
float fDelay;
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
{
fDelay = GetRandomDelay();
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_METEOR_SWARM));
//Make sure the target is outside the 2m safe zone
if (GetDistanceBetween(oTarget, OBJECT_SELF) > 2.0)
{
//Make SR check
if (!MyResistSpell(OBJECT_SELF, oTarget, 0.5))
{
//Roll damage
nDamage = d6(20);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 120;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(),SAVING_THROW_TYPE_FIRE);
//Set the damage effect
eFire = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
if(nDamage > 0)
{
//Apply damage effect and VFX impact.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
}
//Get next target in the spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
}
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Meteor Swarm' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,213 @@
//::///////////////////////////////////////////////
//:: Prismatic Spray
//:: [NW_S0_PrisSpray.nss]
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
//:: Sends out a prismatic cone that has a random
//:: effect for each target struck.
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Dec 19, 2000
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001
//:: Last Updated By: Aidan Scanlan On: April 11, 2001
//:: Last Updated By: Preston Watamaniuk, On: June 11, 2001
int ApplyPrismaticEffect(int nEffect, object oTarget);
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
object oTarget;
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nMetaMagic = GetMetaMagicFeat();
int nRandom;
int nHD;
int nVisual;
effect eVisual;
int bTwoEffects;
//Set the delay to apply to effects based on the distance to the target
float fDelay = 0.5 + GetDistanceBetween(OBJECT_SELF, oTarget)/20;
//Get first target in the spell area
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 11.0, GetSpellTargetLocation());
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_PRISMATIC_SPRAY));
//Make an SR check
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay) && (oTarget != OBJECT_SELF))
{
//Blind the target if they are less than 9 HD
nHD = GetHitDice(oTarget);
if (nHD <= 8)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBlindness(), oTarget, RoundsToSeconds(nCasterLevel));
}
//Determine if 1 or 2 effects are going to be applied
nRandom = d8();
if(nRandom == 8)
{
//Get the visual effect
nVisual = ApplyPrismaticEffect(Random(7) + 1, oTarget);
nVisual = ApplyPrismaticEffect(Random(7) + 1, oTarget);
}
else
{
//Get the visual effect
nVisual = ApplyPrismaticEffect(nRandom, oTarget);
}
//Set the visual effect
if(nVisual != 0)
{
eVisual = EffectVisualEffect(nVisual);
//Apply the visual effect
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget));
}
}
}
//Get next target in the spell area
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, GetSpellTargetLocation());
}
}
///////////////////////////////////////////////////////////////////////////////
// ApplyPrismaticEffect
///////////////////////////////////////////////////////////////////////////////
/* Given a reference integer and a target, this function will apply the effect
of corresponding prismatic cone to the target. To have any effect the
reference integer (nEffect) must be from 1 to 7.*/
///////////////////////////////////////////////////////////////////////////////
// Created By: Aidan Scanlan On: April 11, 2001
///////////////////////////////////////////////////////////////////////////////
int ApplyPrismaticEffect(int nEffect, object oTarget)
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "UnderwaterArea");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nDamage;
effect ePrism;
effect eVis;
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink;
int nVis;
float fDelay = 0.5 + GetDistanceBetween(OBJECT_SELF, oTarget)/20;
//Based on the random number passed in, apply the appropriate effect and set the visual to
//the correct constant
switch(nEffect)
{
case 1://fire
nDamage = 20;
nVis = VFX_IMP_FLAME_S;
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(),SAVING_THROW_TYPE_FIRE);
ePrism = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("That effect of 'Prismatic Spray' will not work underwater!", oPC);
}
//Normal spell effects.
if (nInt != 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, ePrism, oTarget));
}
break;
case 2: //Acid
nDamage = 40;
nVis = VFX_IMP_ACID_L;
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(),SAVING_THROW_TYPE_ACID);
ePrism = EffectDamage(nDamage, DAMAGE_TYPE_ACID);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, ePrism, oTarget));
break;
case 3: //Electricity
nDamage = 80;
nVis = VFX_IMP_LIGHTNING_S;
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(),SAVING_THROW_TYPE_ELECTRICITY);
ePrism = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
//Spell reflects on caster if underwater.
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, ePrism, oCaster));
FloatingTextStringOnCreature("That effect of 'Prismatic Spray' is reflected underwater!", oPC);
}
//Normal spell effects.
if (nInt != 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, ePrism, oTarget));
}
break;
case 4: //Poison
{
effect ePoison = EffectPoison(POISON_BEBILITH_VENOM);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, ePoison, oTarget));
}
break;
case 5: //Paralyze
{
effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED);
if (MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC()) == 0)
{
ePrism = EffectParalyze();
eLink = EffectLinkEffects(eDur, ePrism);
eLink = EffectLinkEffects(eLink, eDur2);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(10)));
}
}
break;
case 6: //Confusion
{
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
ePrism = EffectConfused();
eLink = EffectLinkEffects(eMind, ePrism);
eLink = EffectLinkEffects(eLink, eDur);
if (!/*Will Save*/ MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_MIND_SPELLS, OBJECT_SELF, fDelay))
{
nVis = VFX_IMP_CONFUSION_S;
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(10)));
}
}
break;
case 7: //Death
{
if (!/*Will Save*/ MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_DEATH, OBJECT_SELF, fDelay))
{
//nVis = VFX_IMP_DEATH;
ePrism = EffectDeath();
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, ePrism, oTarget));
}
}
break;
}
return nVis;
}

View File

@@ -0,0 +1,86 @@
//::///////////////////////////////////////////////
//:: Ray of Frost
//:: [NW_S0_RayFrost.nss]
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
/*
If the caster succeeds at a ranged touch attack
the target takes 1d4 damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: feb 4, 2001
//:://////////////////////////////////////////////
//:: Bug Fix: Andrew Nobbs, April 17, 2003
//:: Notes: Took out ranged attack roll.
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nInt=GetLocalInt(oPC, "Underwater");
object oTarget = GetSpellTargetObject();
int nMetaMagic = GetMetaMagicFeat();
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nDam = d4(1) + 1;
effect eDam;
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
effect eRay = EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_HAND);
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RAY_OF_FROST));
eRay = EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_HAND);
//Make SR Check
if(!MyResistSpell(OBJECT_SELF, oTarget))
{
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDam = 5 ;//Damage is at max
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDam = nDam + nDam/2; //Damage/Healing is +50%
}
//Set damage effect
eDam = EffectDamage(nDam, DAMAGE_TYPE_COLD);
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oCaster);
FloatingTextStringOnCreature("The spell 'Ray of Frost' is reflected underwater!", oPC);
}
//Normal spell effects.
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
}
}
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7);
}

View File

@@ -0,0 +1,127 @@
//::///////////////////////////////////////////////
//:: Searing Light
//:: s_SearLght.nss
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
//:: Focusing holy power like a ray of the sun, you project
//:: a blast of light from your open palm. You must succeed
//:: at a ranged touch attack to strike your target. A creature
//:: struck by this ray of light suffers 1d8 points of damage
//:: per two caster levels (maximum 5d8). Undead creatures suffer
//:: 1d6 points of damage per caster level (maximum 10d6), and
//:: undead creatures particularly vulnerable to sunlight, such
//:: as vampires, suffer 1d8 points of damage per caster level
//:: (maximum 10d8). Constructs and inanimate objects suffer only
//:: 1d6 points of damage per two caster levels (maximum 5d6).
//:://////////////////////////////////////////////
//:: Created By: Keith Soleski
//:: Created On: 02/05/2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Searing Light' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oTarget = GetSpellTargetObject();
int nMetaMagic = GetMetaMagicFeat();
int nCasterLevel = GetCasterLevel(oCaster);
int nDamage;
int nMax;
effect eDam;
effect eVis = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
effect eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND);
if (nInt != 1)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SEARING_LIGHT));
eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND);
//Make an SR Check
if (!MyResistSpell(oCaster, oTarget))
{
//Limit caster level
if (nCasterLevel > 10)
{
nCasterLevel = 10;
}
//Check for racial type undead
if (GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
{
nDamage = d6(nCasterLevel);
nMax = 6;
}
//Check for racial type construct
else if (GetRacialType(oTarget) == RACIAL_TYPE_CONSTRUCT)
{
nCasterLevel /= 2;
if(nCasterLevel == 0)
{
nCasterLevel = 1;
}
nDamage = d6(nCasterLevel);
nMax = 6;
}
else
{
nCasterLevel = nCasterLevel/2;
if(nCasterLevel == 0)
{
nCasterLevel = 1;
}
nDamage = d8(nCasterLevel);
nMax = 8;
}
//Make metamagic checks
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = nMax * nCasterLevel;
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2);
}
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_DIVINE);
//Apply the damage effect and VFX impact
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.0);
}
}
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7);
}
}

View File

@@ -0,0 +1,161 @@
//::///////////////////////////////////////////////
//:: [Sound Burst]
//:: [NW_S0_SndBurst.nss]
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
//:: Does 1d8 damage to all creatures in a 10ft
//:: radius. Will save or the creature is stunned
//:: for 1 round.
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 31, 2001
//:://////////////////////////////////////////////
//:: Last Updated By: Georg Z, Oct. 2003
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
return;
}
// End of Spell Cast Hook
//Declare major variables
object oTarget;
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
effect eStun = EffectStunned();
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
effect eFNF = EffectVisualEffect(VFX_FNF_SOUND_BURST);
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
int nInt=GetLocalInt(oPC, "Underwater");
effect eLink = EffectLinkEffects(eStun, eMind);
eLink = EffectLinkEffects(eLink, eDur);
effect eDam;
location lLoc = GetSpellTargetLocation();
int nDC = GetSpellSaveDC();
//Apply the FNF to the spell location
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eFNF, lLoc);
//Get the first target in the spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lLoc);
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SOUND_BURST));
//Make a SR check
if(!MyResistSpell(OBJECT_SELF, oTarget))
{
//Roll damage
nDamage = d8();
//Make a Will roll to avoid being stunned
if(!/*Will Save*/ MySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SONIC))
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2));
}
//Make meta magic checks
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 8;
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2);
}
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_SONIC);
//Apply the VFX impact and damage effect
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis,oCaster);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam,oCaster);
FloatingTextStringOnCreature("The spell 'Sound Burst' is reflected underwater!", oPC);
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis,oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam,oTarget);
}
}
//Get the next target in the spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lLoc);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Sound Burst' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,147 @@
//::///////////////////////////////////////////////
//:: Storm of Vengeance: Heartbeat
//:: NW_S0_StormVenC.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates an AOE that decimates the enemies of
the cleric over a 30ft radius around the caster
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 8, 2001
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
effect eAcid = EffectDamage(d6(3), DAMAGE_TYPE_ACID);
effect eElec = EffectDamage(d6(6), DAMAGE_TYPE_ELECTRICAL);
effect eStun = EffectStunned();
effect eVisAcid = EffectVisualEffect(VFX_IMP_ACID_S);
effect eVisElec = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
effect eVisStun = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eStun, eVisStun);
eLink = EffectLinkEffects(eLink, eDur);
float fDelay;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Storm of Vengeance' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
//Get first target in spell area
object oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE);
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, GetAreaOfEffectCreator()))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELL_STORM_OF_VENGEANCE));
//Make an SR Check
fDelay = GetRandomDelay(0.5, 2.0);
if(MyResistSpell(GetAreaOfEffectCreator(), oTarget, fDelay) == 0)
{
//Make a saving throw check
// * if the saving throw is made they still suffer acid damage.
// * if they fail the saving throw, they suffer Electrical damage too
if(MySavingThrow(SAVING_THROW_REFLEX, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ELECTRICITY, GetAreaOfEffectCreator(), fDelay))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisAcid, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eAcid, oTarget));
if (d2()==1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisElec, oTarget));
}
}
else
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisAcid, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eAcid, oTarget));
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisElec, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eElec, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2)));
}
}
}
//Get next target in spell area
oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE);
}
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Storm of Vengeance' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,123 @@
//::///////////////////////////////////////////////
//:: Storm of Vengeance
//:: NW_S0_StormVeng.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates an AOE that decimates the enemies of
the cleric over a 30ft radius around the caster
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 8, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables including Area of Effect Object
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
effect eAOE = EffectAreaOfEffect(AOE_PER_STORM);
effect eVis = EffectVisualEffect(VFX_FNF_STORM);
location lTarget = GetSpellTargetLocation();
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Storm of Vengeance' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lTarget);
//Create an instance of the AOE Object using the Apply Effect function
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(10));
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Storm of Vengeance' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,367 @@
//::///////////////////////////////////////////////
//:: Summon Creature Series
//:: NW_S0_Summon
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Carries out the summoning of the appropriate
creature for the Summon Monster Series of spells
1 to 9
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 8, 2002
//:://////////////////////////////////////////////
effect SetSummonEffect(int nSpellID);
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nSpellID = GetSpellId();
int nDuration = GetCasterLevel(OBJECT_SELF);
nDuration = 24;
if(nDuration == 1)
{
nDuration = 2;
}
effect eSummon = SetSummonEffect(nSpellID);
//Make metamagic check for extend
int nMetaMagic = GetMetaMagicFeat();
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration));
}
effect SetSummonEffect(int nSpellID)
{
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nFNF_Effect;
int nRoll = d3();
string sSummon;
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER)) //WITH THE ANIMAL DOMAIN
{
if(nSpellID == SPELL_SUMMON_CREATURE_I)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1;
if (nInt == 1)
{
sSummon = "marinebeetle2";
}
else sSummon = "NW_S_BOARDIRE";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_II)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1;
if (nInt == 1)
{
sSummon = "marinebeetle";
}
else sSummon = "NW_S_WOLFDIRE";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_III)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1;
if (nInt == 1)
{
sSummon = "marinebeetle";
}
else sSummon = "NW_S_SPIDDIRE";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_IV)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2;
if (nInt == 1)
{
sSummon = "giantseaspider";
}
else sSummon = "NW_S_beardire";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_V)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2;
if (nInt == 1)
{
sSummon = "giantseaspider";
}
else sSummon = "NW_S_diretiger";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_VI)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3;
switch (nRoll)
{
case 1:
if (nInt == 1)
{
sSummon = "giantcrab";
}
else sSummon = "NW_S_AIRHUGE";
break;
case 2:
if (nInt == 1)
{
sSummon = "giantcrab";
}
else sSummon = "NW_S_WATERHUGE";
break;
case 3:
if (nInt == 1)
{
sSummon = "giantcrab";
}
else sSummon = "NW_S_FIREHUGE";
break;
}
}
else if(nSpellID == SPELL_SUMMON_CREATURE_VII)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3;
switch (nRoll)
{
case 1:
if (nInt == 1)
{
sSummon = "NW_S_WATERGREAT";
}
else sSummon = "NW_S_AIRGREAT";
break;
case 2:
sSummon = "NW_S_WATERGREAT";
break;
case 3:
if (nInt == 1)
{
sSummon = "NW_S_WATERGREAT";
}
else sSummon = "NW_S_FIREGREAT";
break;
}
}
else if(nSpellID == SPELL_SUMMON_CREATURE_VIII)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3;
switch (nRoll)
{
case 1:
if (nInt == 1)
{
sSummon = "NW_S_WATERELDER";
}
else sSummon = "NW_S_AIRELDER";
break;
case 2:
sSummon = "NW_S_WATERELDER";
break;
case 3:
if (nInt == 1)
{
sSummon = "NW_S_WATERELDER";
}
else sSummon = "NW_S_FIREELDER";
break;
}
}
else if(nSpellID == SPELL_SUMMON_CREATURE_IX)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3;
switch (nRoll)
{
case 1:
if (nInt == 1)
{
sSummon = "NW_S_WATERELDER";
}
else sSummon = "NW_S_AIRELDER";
break;
case 2:
sSummon = "NW_S_WATERELDER";
break;
case 3:
if (nInt == 1)
{
sSummon = "NW_S_WATERELDER";
}
else sSummon = "NW_S_FIREELDER";
break;
}
}
}
else //WITOUT THE ANIMAL DOMAIN
{
if(nSpellID == SPELL_SUMMON_CREATURE_I)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1;
if (nInt == 1)
{
sSummon = "marinebeetle1";
}
else sSummon = "NW_S_badgerdire";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_II)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1;
if (nInt == 1)
{
sSummon = "marinebeetle2";
}
else sSummon = "NW_S_BOARDIRE";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_III)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1;
if (nInt == 1)
{
sSummon = "marinebeetle";
}
else sSummon = "NW_S_WOLFDIRE";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_IV)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2;
if (nInt == 1)
{
sSummon = "giantseaspider";
}
else sSummon = "NW_S_SPIDDIRE";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_V)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2;
if (nInt == 1)
{
sSummon = "giantseaspider";
}
else sSummon = "NW_S_beardire";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_VI)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2;
if (nInt == 1)
{
sSummon = "giantcrab";
}
else sSummon = "NW_S_diretiger";
}
else if(nSpellID == SPELL_SUMMON_CREATURE_VII)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3;
switch (nRoll)
{
case 1:
if (nInt == 1)
{
sSummon = "NW_S_WATERHUGE";
}
else sSummon = "NW_S_AIRHUGE";
break;
case 2:
sSummon = "NW_S_WATERHUGE";
break;
case 3:
if (nInt == 1)
{
sSummon = "NW_S_WATERHUGE";
}
else sSummon = "NW_S_FIREHUGE";
break;
}
}
else if(nSpellID == SPELL_SUMMON_CREATURE_VIII)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3;
switch (nRoll)
{
case 1:
if (nInt == 1)
{
sSummon = "NW_S_WATERGREAT";
}
else sSummon = "NW_S_AIRGREAT";
break;
case 2:
sSummon = "NW_S_WATERGREAT";
break;
case 3:
if (nInt == 1)
{
sSummon = "NW_S_WATERGREAT";
}
else sSummon = "NW_S_FIREGREAT";
break;
}
}
else if(nSpellID == SPELL_SUMMON_CREATURE_IX)
{
nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3;
switch (nRoll)
{
case 1:
if (nInt == 1)
{
sSummon = "NW_S_WATERELDER";
}
else sSummon = "NW_S_AIRELDER";
break;
case 2:
sSummon = "NW_S_WATERELDER";
break;
case 3:
if (nInt == 1)
{
sSummon = "NW_S_WATERELDER";
}
else sSummon = "NW_S_FIREELDER";
break;
}
}
}
//effect eVis = EffectVisualEffect(nFNF_Effect);
//ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetSpellTargetLocation());
effect eSummonedMonster = EffectSummonCreature(sSummon, nFNF_Effect);
return eSummonedMonster;
}

View File

@@ -0,0 +1,64 @@
//::///////////////////////////////////////////////
//:: Summon Monster I
//:: NW_S0_Summon1
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a dire badger to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12 , 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eSummon;
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
if (nInt == 1)
{
eSummon = EffectSummonCreature("marinebeetle1");
}
else
{
eSummon = EffectSummonCreature("NW_S_badgerdire");
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER))
{
eSummon = EffectSummonCreature("NW_S_BOARDIRE");
}
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,65 @@
//::///////////////////////////////////////////////
//:: Summon Monster II
//:: NW_S0_Summon2
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a dire boar to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12 , 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eSummon;
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
if (nInt == 1)
{
eSummon = EffectSummonCreature("marinebeetle2");
}
else
{
eSummon = EffectSummonCreature("NW_S_BOARDIRE");
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER))
{
eSummon = EffectSummonCreature("NW_S_WOLFDIRE");
}
}
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,63 @@
//::///////////////////////////////////////////////
//:: Summon Monster III
//:: NW_S0_Summon3
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a dire wolf to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Brenon Holmes
//:: Created On: Dec 10 , 2000
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 12, 2001
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eSummon;
if (nInt == 1)
{
eSummon = EffectSummonCreature("marinebeetle");
}
else
{
eSummon = EffectSummonCreature("NW_S_WOLFDIRE");
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER))
{
eSummon = EffectSummonCreature("NW_S_SPIDDIRE");
}
}
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,60 @@
//::///////////////////////////////////////////////
//:: Summon Monster IV
//:: NW_S0_Summon4
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a Sword Spider to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eSummon = EffectSummonCreature("NW_S_SPIDDIRE");
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER))
{
eSummon = EffectSummonCreature("NW_S_DIRETIGER");
}
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2);
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
if (nInt == 1)
{
eSummon = EffectSummonCreature("giantseaspider");
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,61 @@
//::///////////////////////////////////////////////
//:: Summon Monster V
//:: NW_S0_Summon5
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a dire spider to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12 , 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eSummon = EffectSummonCreature("NW_S_diretiger");
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER))
{
eSummon = EffectSummonCreature("NW_S_beardire");
}
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2);
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
if (nInt == 1)
{
effect eSummon = EffectSummonCreature("giantseaspider");
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,99 @@
//::///////////////////////////////////////////////
//:: Summon Monster VI
//:: NW_S0_Summon6
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a dire bear to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eSummon = EffectSummonCreature("NW_S_beardire");
if (nInt == 1)
{
effect eSummon = EffectSummonCreature("giantcrab");
}
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER))
{
int nRoll = d4();
switch (nRoll)
{
case 1:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERHUGE");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_AIRHUGE");
}
break;
case 2:
eSummon = EffectSummonCreature("NW_S_WATERHUGE");
break;
case 3:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERHUGE");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_EARTHHUGE");
}
break;
case 4:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERHUGE");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_FIREHUGE");
}
break;
}
}
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2);
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,148 @@
//::///////////////////////////////////////////////
//:: Summon Monster VII
//:: NW_S0_Summon7
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a Minogon to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
effect eSummon;
int nRoll = d4();
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER))
{
switch (nRoll)
{
case 1:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATELDER");
}
else
{
eSummon = EffectSummonCreature("NW_S_AIRGREAT");
}
break;
case 2:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATELDER");
}
else
{
eSummon = EffectSummonCreature("NW_S_WATERGREAT");
}
break;
case 3:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATELDER");
}
else
{
eSummon = EffectSummonCreature("NW_S_EARTHGREAT");
}
break;
case 4:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATELDER");
}
else
{
eSummon = EffectSummonCreature("NW_S_FIREGREAT");
}
break;
}
}
else
{
switch (nRoll)
{
case 1:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERGREAT");
}
else
{
eSummon = EffectSummonCreature("NW_S_AIRHUGE");
}
break;
case 2:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERGREAT");
}
else
{
eSummon = EffectSummonCreature("NW_S_WATERHUGE");
}
break;
case 3:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERGREAT");
}
else
{
eSummon = EffectSummonCreature("NW_S_EARTHHUGE");
}
break;
case 4:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERGREAT");
}
else
{
eSummon = EffectSummonCreature("NW_S_FIREHUGE");
}
break;
}
}
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,129 @@
//::///////////////////////////////////////////////
//:: Summon Monster VIII
//:: NW_S0_Summon8
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a greater earth elemental to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eSummon;
int nRoll = d4();
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER))
{
switch (nRoll)
{
case 1:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERELDER");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_AIRELDER");
}
break;
case 2:
eSummon = EffectSummonCreature("NW_S_WATERELDER");
break;
case 3:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERELDER");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_EARTHELDER");
}
break;
case 4:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERELDER");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_FIREELDER");
}
break;
}
}
else
{
switch (nRoll)
{
case 1:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERGREAT");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_AIRGREAT");
}
break;
case 2:
eSummon = EffectSummonCreature("NW_S_WATERGREAT");
break;
case 3:
eSummon = EffectSummonCreature("NW_S_EARTHGREAT");
break;
case 4:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_EARTHGREAT");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_FIREGREAT");
}
break;
}
}
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,89 @@
//::///////////////////////////////////////////////
//:: Summon Monster IX
//:: NW_S0_Summon9
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Summons a elder elemental to fight for the character
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
effect eSummon;
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
int nRoll = d4();
switch (nRoll)
{
case 1:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERELDER");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_AIRELDER");
}
break;
case 2:
eSummon = EffectSummonCreature("NW_S_WATERELDER");
break;
case 3:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERELDER");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_EARTHELDER");
}
break;
case 4:
if (nInt == 1)
{
eSummon = EffectSummonCreature("NW_S_WATERELDER");
}
if (nInt != 1)
{
eSummon = EffectSummonCreature("NW_S_FIREELDER");
}
break;
}
//Make metamagic check for extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, GetSpellTargetLocation());
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), TurnsToSeconds(nDuration));
}

View File

@@ -0,0 +1,138 @@
//::///////////////////////////////////////////////
//:: Sunbeam
//:: s_Sunbeam.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
//:: All creatures in the beam are struck blind and suffer 4d6 points of damage. (A successful
//:: Reflex save negates the blindness and reduces the damage by half.) Creatures to whom sunlight
//:: is harmful or unnatural suffer double damage.
//::
//:: Undead creatures caught within the ray are dealt 1d6 points of damage per caster level
//:: (maximum 20d6), or half damage if a Reflex save is successful. In addition, the ray results in
//:: the total destruction of undead creatures specifically affected by sunlight if they fail their saves.
//:://////////////////////////////////////////////
//:: Created By: Keith Soleski
//:: Created On: Feb 22, 2001
//:://////////////////////////////////////////////
//:: Last Modified By: Keith Soleski, On: March 21, 2001
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Sunbeam' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nMetaMagic = GetMetaMagicFeat();
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
effect eStrike = EffectVisualEffect(VFX_FNF_SUNBEAM);
effect eDam;
effect eBlind = EffectBlindness();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eBlind, eDur);
int nCasterLevel= GetCasterLevel(OBJECT_SELF);
int nDamage;
int nOrgDam;
int nMax;
float fDelay;
int nBlindLength = 3;
//Limit caster level
if (nCasterLevel > 20)
{
nCasterLevel = 20;
}
//Normal spell effects.
if (nInt != 1)
{
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, GetSpellTargetLocation());
//Get the first target in the spell area
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetSpellTargetLocation());
while(GetIsObjectValid(oTarget))
{
// Make a faction check
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
fDelay = GetRandomDelay(1.0, 2.0);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SUNBEAM));
//Make an SR check
if ( ! MyResistSpell(OBJECT_SELF, oTarget, 1.0))
{
//Check if the target is an undead
if (GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
{
//Roll damage and save
nDamage = d6(nCasterLevel);
nMax = 6;
}
else
{
//Roll damage and save
nDamage = d6(3);
nOrgDam = nDamage;
nMax = 6;
nCasterLevel = 3;
//Get the adjusted damage due to Reflex Save, Evasion or Improved Evasion
}
//Do metamagic checks
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = nMax * nCasterLevel;
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2);
}
//Check that a reflex save was made.
if(MySavingThrow(SAVING_THROW_REFLEX, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_DIVINE, OBJECT_SELF, 1.0) == 0)
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nBlindLength)));
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, 0, SAVING_THROW_TYPE_DIVINE);
}
//Set damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_DIVINE);
if(nDamage > 0)
{
//Apply the damage effect and VFX impact
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
}
}
}
//Get the next target in the spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetSpellTargetLocation());
}
}
}

View File

@@ -0,0 +1,156 @@
//::///////////////////////////////////////////////
//:: Wail of the Banshee
//:: NW_S0_WailBansh
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
You emit a terrible scream that kills enemy creatures who hear it
The spell affects up to one creature per caster level. Creatures
closest to the point of origin are affected first.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Dec 12, 2000
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001
//:: VFX Pass By: Preston W, On: June 25, 2001
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nToAffect = nCasterLevel;
object oTarget;
float fTargetDistance;
float fDelay;
location lTarget;
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
effect eWail = EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES);
int nCnt = 1;
//Apply the FNF VFX impact
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eWail, GetSpellTargetLocation());
//Get the closet target from the spell target location
oTarget = GetSpellTargetObject(); // direct target
if (!GetIsObjectValid(oTarget))
oTarget = GetNearestObjectToLocation(OBJECT_TYPE_CREATURE, GetSpellTargetLocation(), nCnt);
while (nCnt <= nToAffect)
{
lTarget = GetLocation(oTarget);
//Get the distance of the target from the center of the effect
fDelay = GetRandomDelay(3.0, 4.0);//
fTargetDistance = GetDistanceBetweenLocations(GetSpellTargetLocation(), lTarget);
//Check that the current target is valid and closer than 10.0m
if(GetIsObjectValid(oTarget) && fTargetDistance <= 10.0)
{
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WAIL_OF_THE_BANSHEE));
//Make SR check
if(!MyResistSpell(OBJECT_SELF, oTarget)) //, 0.1))
{
//Make a fortitude save to avoid death
if(!MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_DEATH)) //, OBJECT_SELF, 3.0))
{
//Apply the delay VFX impact and death effect
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
effect eDeath = EffectDeath();
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); // no delay
}
}
}
}
else
{
//Kick out of the loop
nCnt = nToAffect;
}
//Increment the count of creatures targeted
nCnt++;
//Get the next closest target in the spell target location.
oTarget = GetNearestObjectToLocation(OBJECT_TYPE_CREATURE, GetSpellTargetLocation(), nCnt);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Wail of the Banshee' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,59 @@
//::///////////////////////////////////////////////
//:: Wall of Fire
//:: NW_S0_WallFire.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates a wall of fire that burns any creature
entering the area around the wall. Those moving
through the AOE are burned for 4d6 fire damage
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: July 17, 2001
//:://////////////////////////////////////////////
void main()
{
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Declare Area of Effect object using the appropriate constant
effect eAOE = EffectAreaOfEffect(AOE_PER_WALLFIRE);
//Get the location where the wall is to be placed.
location lTarget = GetSpellTargetLocation();
int nDuration = GetCasterLevel(OBJECT_SELF) / 2;
if(nDuration == 0)
{
nDuration = 1;
}
int nMetaMagic = GetMetaMagicFeat();
//Check fort metamagic
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Wall of Fire' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
//Create the Area of Effect Object declared above.
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(nDuration));
// TK added for cheat casting
if (GetLocalInt(OBJECT_SELF, "AI_CHEAT_CASTING"))
{
// shades = 158
DecrementRemainingSpellUses(OBJECT_SELF, 158);
DeleteLocalInt(OBJECT_SELF, "AI_CHEAT_CASTING");
}
}
}

View File

@@ -0,0 +1,73 @@
//::///////////////////////////////////////////////
//:: Wall of Fire: On Enter
//:: NW_S0_WallFireA.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Person within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
effect eDam;
object oTarget;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Wall of Fire' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
//Capture the first target object in the shape.
oTarget = GetEnteringObject();
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WALL_OF_FIRE));
//Make SR check, and appropriate saving throw(s).
if(!MyResistSpell(GetAreaOfEffectCreator(), oTarget))
{
//Roll damage.
nDamage = d6(4);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 24;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}
}
}
}

View File

@@ -0,0 +1,90 @@
//::///////////////////////////////////////////////
//:: Wall of Fire: Heartbeat
//:: NW_S0_WallFireA.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Person within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
effect eDam;
object oTarget;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Wall of Fire' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
//Capture the first target object in the shape.
//--------------------------------------------------------------------------
// GZ 2003-Oct-15
// When the caster is no longer there, all functions calling
// GetAreaOfEffectCreator will fail. Its better to remove the barrier then
//--------------------------------------------------------------------------
if (!GetIsObjectValid(GetAreaOfEffectCreator()))
{
DestroyObject(OBJECT_SELF);
return;
}
oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Declare the spell shape, size and the location.
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WALL_OF_FIRE));
//Make SR check, and appropriate saving throw(s).
if(!MyResistSpell(GetAreaOfEffectCreator(), oTarget))
{
//Roll damage.
nDamage = d6(4);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 24;//Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 1.0);
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
}
}

View File

@@ -0,0 +1,177 @@
//::///////////////////////////////////////////////
//:: Bombardment
//:: X0_S0_Bombard
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Rocks fall from sky
// 1d8 damage/level to a max of 10d8
// Reflex save for half
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 22 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 01, 2003
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
object oCaster = OBJECT_SELF;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Bombardment' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_METEOR_SWARM);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 10)
{
nCasterLvl = 10;
}
//Normal spell effects.
if (nInt != 1)
{
//Apply the fireball explosion at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) == TRUE)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
//Roll damage for each target
nDamage = d8(nCasterLvl);
//Resolve metamagic
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 8 * nCasterLvl;
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + nDamage / 2;
}
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ALL);
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Bombardment' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,93 @@
//::///////////////////////////////////////////////
//:: Drown
//:: [X0_S0_Drown.nss]
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
if the creature fails a FORT throw.
Does not work against Undead, Constructs, or Elementals.
January 2003:
- Changed to instant kill the target.
May 2003:
- Changed damage to 90% of current HP, instead of instant kill.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 26 2002
//:://////////////////////////////////////////////
//:: Last Update By: Andrew Nobbs May 01, 2003
#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Drown' is pointless underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oTarget = GetSpellTargetObject();
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
int nDam = GetCurrentHitPoints(oTarget);
//Set visual effect
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
effect eDam;
//Normal spell effects.
if (nInt != 1)
{
//Check faction of target
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 437));
//Make SR Check
if(!MyResistSpell(OBJECT_SELF, oTarget))
{
// * certain racial types are immune
if ((GetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT)
&&(GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
&&(GetRacialType(oTarget) != RACIAL_TYPE_ELEMENTAL))
{
//Make a fortitude save
if(!MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC()))
{
nDam = FloatToInt(nDam * 0.9);
eDam = EffectDamage(nDam, DAMAGE_TYPE_BLUDGEONING);
//Apply the VFX impact and damage effect
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
}
}
}
}
}
}

View File

@@ -0,0 +1,166 @@
//::///////////////////////////////////////////////
//:: Earthquake
//:: X0_S0_Earthquake
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Ground shakes. 1d6 damage, max 10d6
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 22 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 01, 2003
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
float fDelay;
float nSize = RADIUS_SIZE_COLOSSAL;
effect eExplode = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE);
effect eDam;
effect eShake = EffectVisualEffect(356);
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 10)
{
nCasterLvl = 10;
}
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShake, OBJECT_SELF, RoundsToSeconds(6));
//Apply epicenter explosion on caster
//ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, GetLocation(OBJECT_SELF));
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_EARTHQUAKE));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
// Earthquake does not allow spell resistance
// if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
nDamage = MaximizeOrEmpower(6, nCasterLvl, GetMetaMagicFeat());
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. (Don't bother for caster)
if (oTarget != oCaster)
{
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ALL);
}
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING);
// * caster can't be affected by the spell
if( (nDamage > 0) && (oTarget != oCaster))
{
// Apply effects to the currently selected target.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Earthquake' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,48 @@
//::///////////////////////////////////////////////
//:: Electric Jolt
//:: [x0_s0_ElecJolt.nss]
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
1d3 points of electrical damage to one target.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 17 2002
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
void main()
{
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject();
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_ELECTRIC_JOLT));
//Make SR Check
if(!MyResistSpell(OBJECT_SELF, oTarget))
{
//Set damage effect
effect eBad = EffectDamage(MaximizeOrEmpower(3, 1, GetMetaMagicFeat()), DAMAGE_TYPE_ELECTRICAL);
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBad, oCaster);
FloatingTextStringOnCreature("The spell 'Electric Jolt' is reflected underwater!", oPC);
}
//Apply the VFX impact and damage effect
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBad, oTarget);
}
}
}

View File

@@ -0,0 +1,42 @@
//::///////////////////////////////////////////////
//:: Firebrand
//:: x0_x0_Firebrand
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// * Fires a flame arrow to every target in a
// * colossal area
// * Each target explodes into a small fireball for
// * 1d6 damage / level (max = 15 levels)
// * Only nLevel targets can be affected
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 29 2002
//:://////////////////////////////////////////////
//:: Last Updated By:
#include "X0_I0_SPELLS"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Firebrand' will not work underwater!", oPC);
return;
}
//
int nDamage = GetCasterLevel(OBJECT_SELF);
if (nDamage > 15)
nDamage = 15;
//Normal spell effects.
if (nInt != 1)
{
DoMissileStorm(nDamage, 15, SPELL_FIREBRAND, VFX_IMP_MIRV_FLAME, VFX_IMP_FLAME_M, DAMAGE_TYPE_FIRE, TRUE);
}
}

View File

@@ -0,0 +1,56 @@
//::///////////////////////////////////////////////
//:: Flare
//:: [X0_S0_Flare.nss]
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creature hit by ray loses 1 to attack rolls.
DURATION: 10 rounds.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 17 2002
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
void main()
{ //Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
object oTarget = GetSpellTargetObject();
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Flare' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 416));
// * Apply the hit effect so player knows something happened
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
//Make SR Check
if ((!MyResistSpell(OBJECT_SELF, oTarget)) && (MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC()) == FALSE) )
{
//Set damage effect
effect eBad = EffectAttackDecrease(1);
//Apply the VFX impact and damage effect
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBad, oTarget, RoundsToSeconds(10));
}
}
}
}

View File

@@ -0,0 +1,105 @@
//::///////////////////////////////////////////////
//:: Gust of Wind
//:: [x0_s0_gustwind.nss]
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spell creates a gust of wind in all directions
around the target. All targets in a medium area will be
affected:
- Target must make a For save vs. spell DC or be
knocked down for 3 rounds
- plays a wind sound
- if an area of effect object is within the area
it is dispelled
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: September 7, 2002
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
void main()
{
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
object oCaster = OBJECT_SELF;
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20);
effect eVis = EffectVisualEffect(VFX_IMP_PULSE_WIND);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Gust of Wind' will not work underwater!", oPC);
return;
}
//Normal spell effects.
if (nInt != 1)
{
// effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Apply the fireball explosion at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE | OBJECT_TYPE_AREA_OF_EFFECT);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (GetObjectType(oTarget) == OBJECT_TYPE_AREA_OF_EFFECT)
{
DestroyObject(oTarget);
}
else
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
// * unlocked doors will reverse their open state
if (GetObjectType(oTarget) == OBJECT_TYPE_DOOR)
{
if (GetLocked(oTarget) == FALSE)
{
if (GetIsOpen(oTarget) == FALSE)
{
AssignCommand(oTarget, ActionOpenDoor(oTarget));
}
else
AssignCommand(oTarget, ActionCloseDoor(oTarget));
}
}
if(!MyResistSpell(OBJECT_SELF, oTarget) && !/*Fort Save*/ MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC()))
{
effect eKnockdown = EffectKnockdown();
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnockdown, oTarget, RoundsToSeconds(3));
// Apply effects to the currently selected target.
// DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE |OBJECT_TYPE_AREA_OF_EFFECT);
}
}
}

View File

@@ -0,0 +1,110 @@
//::///////////////////////////////////////////////
//:: Inferno
//:: x0_s0_inferno.nss
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
/*
Converted Melf's Acid Arrow script.
Does 2d6 fire per round
Duration: 1 round per level
*/
/////////////////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Aidan Scanlan
//:: Created On: 01/09/01
//:://////////////////////////////////////////////
//:: Update Pass By: Preston W, On: Aug 2, 2001
#include "X0_I0_SPELLS"
void RunImpact(int nSecondsRemaining, object oTarget);
void DoDamage(object oTarget);
void main()
{
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Inferno' will not work underwater!", oPC);
return;
}
//
object oTarget = GetSpellTargetObject();
int nMetaMagic = GetMetaMagicFeat();
int nCount;
effect eArrow;
int nDuration = GetCasterLevel(OBJECT_SELF) - 1;// (-1 because we are delaying the first impact by 1 round)
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration * 2;
}
//figure out projectile timing
float fDist = GetDistanceToObject(oTarget);
float fDelay = (fDist/25.0);//(3.0 * log(fDist) + 2.0);
//Check that there is at least one payload damage
eArrow = EffectVisualEffect(VFX_FNF_FIREBALL);
if (nDuration < 1)
{
nDuration = 1;
}
//Normal spell effects.
if (nInt != 1)
{
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 446));
//Make an SR check
if(!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
DoDamage(oTarget);
//Apply the bonus damage
nDuration = nDuration * 6;
DelayCommand(6.0, RunImpact(nDuration, oTarget));
}
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eArrow, oTarget);
}
}
void DoDamage(object oTarget)
{
int nMetaMagic = GetMetaMagicFeat();
effect eDam = EffectDamage(MaximizeOrEmpower(6,2,nMetaMagic), DAMAGE_TYPE_FIRE);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
void RunImpact(int nSecondsRemaining, object oTarget)
{
if (GetIsDead(oTarget) == FALSE)
{
if (nSecondsRemaining % 6 == 0)
{
DoDamage(oTarget);
}
--nSecondsRemaining;
if (nSecondsRemaining > 0)
{
DelayCommand(1.0f,RunImpact(nSecondsRemaining,oTarget));
}
}
// Note: if the target is dead during one of these second-long heartbeats,
// the DelayCommand doesn't get run again, and the whole package goes away.
// Do NOT attempt to put more than two parameters on the delay command. They
// may all end up on the stack, and that's all bad. 60 x 2 = 120.
}

View File

@@ -0,0 +1,168 @@
//::///////////////////////////////////////////////
//:: Balagarn's Iron Horn
//::
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Create a virbration that shakes creatures off their feet.
// Make a strength check as if caster has strength 20
// against all enemies in area
// Changes it so its not a cone but a radius.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 22 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 01, 2003
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nInt=GetLocalInt(oPC, "Underwater");
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
float fDelay;
float nSize = RADIUS_SIZE_COLOSSAL;
effect eExplode = EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_BUMP);
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 20)
{
nCasterLvl = 20;
}
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShake, OBJECT_SELF, RoundsToSeconds(d3()));
//Apply epicenter explosion on caster
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, GetLocation(OBJECT_SELF));
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
// * spell should not affect the caster
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && (oTarget != oCaster))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 436));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
effect eTrip = EffectKnockdown();
// * DO a strength check vs. Strength 20
if (d20() + GetAbilityScore(oTarget, ABILITY_STRENGTH) <= 20 + d20() )
{
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTrip, oCaster, 6.0));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster));
FloatingTextStringOnCreature("The spell 'Balagarn's Iron Horn' is reflected underwater!", oPC);
}
// Apply effects to the currently selected target.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTrip, oTarget, 6.0));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
else
FloatingTextStrRefOnCreature(2750, OBJECT_SELF, FALSE);
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Balagarn's Iron Horn' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,223 @@
//::///////////////////////////////////////////////
//:: Sunburst
//:: X0_S0_Sunburst
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Brilliant globe of heat
// All creatures in the globe are blinded and
// take 6d6 damage
// Undead creatures take 1d6 damage (max 25d6)
// The blindness is permanent unless cast to remove it
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 23 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 14, 2003
//:: Notes: Changed damage to non-undead to 6d6
//:: 2003-10-09: GZ Added Subrace check for vampire special case, bugfix
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
float nSize = RADIUS_SIZE_COLOSSAL;
void main()
{
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
object oCaster = OBJECT_SELF;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Sunburst' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
int nDamage = 0;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY);
effect eHitVis = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE);
effect eLOS = EffectVisualEffect(VFX_FNF_LOS_HOLY_30);
effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 25)
{
nCasterLvl = 25;
}
//Normal spell effects.
if (nInt != 1)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLOS, GetSpellTargetLocation());
int bDoNotDoDamage = FALSE;
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SUNBURST));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHitVis, oTarget);
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
if (GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
{
//Roll damage for each target
nDamage = MaximizeOrEmpower(6, nCasterLvl, nMetaMagic);
}
else
{
nDamage = MaximizeOrEmpower(6, 6, nMetaMagic);
}
// * if a vampire then destroy it
if (GetAppearanceType(oTarget) == APPEARANCE_TYPE_VAMPIRE_MALE || GetAppearanceType(oTarget) == APPEARANCE_TYPE_VAMPIRE_FEMALE || GetStringLowerCase(GetSubRace(oTarget)) == "vampire" )
{
// SpeakString("I vampire");
// * if reflex saving throw fails no blindness
if (!ReflexSave(oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_SPELL))
{
effect eDead = EffectDamage(GetCurrentHitPoints(oTarget));
//ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oTarget);
//Apply epicenter explosion on caster
ApplyEffectToObject(DURATION_TYPE_INSTANT, eExplode, oTarget);
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDead, oTarget));
bDoNotDoDamage = TRUE;
}
}
if (bDoNotDoDamage == FALSE)
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_SPELL);
// * Do damage
if ((nDamage > 0) && (bDoNotDoDamage == FALSE))
{
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
// Apply effects to the currently selected target.
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
if (GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
{
// * if reflex saving throw fails no blindness
if (!ReflexSave(oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_SPELL))
{
effect eBlindness = EffectBlindness();
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBlindness, oTarget);
}
}
} // nDamage > 0
}
//-----------------------------------------------------------------
// GZ: Bugfix, reenable damage for next object
//-----------------------------------------------------------------
bDoNotDoDamage = FALSE;
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Sunburst' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,210 @@
//::///////////////////////////////////////////////
//:: Combust
//:: X2_S0_Combust
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
/*
The initial eruption of flame causes 2d6 fire damage +1
point per caster level(maximum +10)
with no saving throw.
Further, the creature must make
a Reflex save or catch fire taking a further 1d6 points
of damage. This will continue until the Reflex save is
made.
There is an undocumented artificial limit of
10 + casterlevel rounds on this spell to prevent
it from running indefinitly when used against
fire resistant creatures with bad saving throws
*/
//:://////////////////////////////////////////////
// Created: 2003/09/05 Georg Zoeller
//:://////////////////////////////////////////////
#include "x2_I0_SPELLS"
#include "x2_inc_toollib"
#include "x2_inc_spellhook"
void RunCombustImpact(object oTarget, object oCaster, int nLevel, int nMetaMagic);
void main()
{
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell will fail if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Combust' will not work underwater!", oPC);
return;
}
object oTarget = GetSpellTargetObject();
//--------------------------------------------------------------------------
// Spellcast Hook Code
// Added 2003-06-20 by Georg
// If you want to make changes to all spells, check x2_inc_spellhook.nss to
// find out more
//--------------------------------------------------------------------------
if (!X2PreSpellCastCode())
{
return;
}
// End of Spell Cast Hook
//--------------------------------------------------------------------------
// Calculate the save DC
//--------------------------------------------------------------------------
int nDC = GetSpellSaveDC();
int nLevel = GetCasterLevel(OBJECT_SELF);
//--------------------------------------------------------------------------
// Calculate the damage, 2d6 + casterlevel, capped at +10
//--------------------------------------------------------------------------
int nDamage = GetCasterLevel(OBJECT_SELF);
if (nDamage > 10)
{
nDamage = 10;
}
int nMetaMagic = GetMetaMagicFeat();
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage += 12;//Damage is at max
}
else
{
nDamage += d6(2);
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2);//Damage/Healing is +50%
}
}
//--------------------------------------------------------------------------
// Calculate the duration (we need a duration or bad things would happen
// if someone is immune to fire but fails his safe all the time)
//--------------------------------------------------------------------------
int nDuration = 10 + GetCasterLevel(OBJECT_SELF);
if (nDuration < 1)
{
nDuration = 10;
}
//--------------------------------------------------------------------------
// Setup Effects
//--------------------------------------------------------------------------
effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
effect eDur = EffectVisualEffect(498);
if(!GetIsReactionTypeFriendly(oTarget))
{
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
//-----------------------------------------------------------------------
// Check SR
//-----------------------------------------------------------------------
if(!MyResistSpell(OBJECT_SELF, oTarget))
{
//-------------------------------------------------------------------
// Apply VFX
//-------------------------------------------------------------------
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
TLVFXPillar(VFX_IMP_FLAME_M, GetLocation(oTarget), 5, 0.1f,0.0f, 2.0f);
//------------------------------------------------------------------
// This spell no longer stacks. If there is one of that type,
// that's enough
//------------------------------------------------------------------
if (GetHasSpellEffect(GetSpellId(),oTarget) || GetHasSpellEffect(SPELL_INFERNO,oTarget) )
{
FloatingTextStrRefOnCreature(100775,OBJECT_SELF,FALSE);
return;
}
//------------------------------------------------------------------
// Apply the VFX that is used to track the spells duration
//------------------------------------------------------------------
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oTarget, RoundsToSeconds(nDuration));
//------------------------------------------------------------------
// Save the spell save DC as a variable for later retrieval
//------------------------------------------------------------------
SetLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (SPELL_COMBUST), nDC);
//------------------------------------------------------------------
// Tick damage after 6 seconds again
//------------------------------------------------------------------
DelayCommand(6.0, RunCombustImpact(oTarget,oCaster,nLevel, nMetaMagic));
}
}
}
void RunCombustImpact(object oTarget, object oCaster, int nLevel, int nMetaMagic)
{
//--------------------------------------------------------------------------
// Check if the spell has expired (check also removes effects)
//--------------------------------------------------------------------------
if (GZGetDelayedSpellEffectsExpired(SPELL_COMBUST,oTarget,oCaster))
{
return;
}
if (GetIsDead(oTarget) == FALSE)
{
int nDC = GetLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (SPELL_COMBUST));
if(!MySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_FIRE))
{
//------------------------------------------------------------------
// Calculate the damage, 1d6 + casterlevel, capped at +10
//------------------------------------------------------------------
int nDamage = nLevel;
if (nDamage > 10)
{
nDamage = 10;
}
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage += 6;
}
else
{
nDamage += d6();
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + (nDamage/2);
}
}
effect eDmg = EffectDamage(nDamage,DAMAGE_TYPE_FIRE);
effect eVFX = EffectVisualEffect(VFX_IMP_FLAME_S);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eDmg,oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eVFX,oTarget);
//------------------------------------------------------------------
// After six seconds (1 round), check damage again
//------------------------------------------------------------------
DelayCommand(6.0f,RunCombustImpact(oTarget,oCaster, nLevel,nMetaMagic));
}
else
{
DeleteLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (SPELL_COMBUST));
GZRemoveSpellEffects(SPELL_COMBUST, oTarget);
}
}
}

View File

@@ -0,0 +1,153 @@
//::///////////////////////////////////////////////
//:: Gedlee's Electric Loop
//:: X2_S0_ElecLoop
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
You create a small stroke of lightning that
cycles through all creatures in the area of effect.
The spell deals 1d6 points of damage per 2 caster
levels (maximum 5d6). Those who fail their Reflex
saves must succeed at a Will save or be stunned
for 1 round.
Spell is standard hostile, so if you use it
in hardcore mode, it will zap yourself!
*/
//:://////////////////////////////////////////////
//:: Created By: Georg Zoeller
//:: Created On: Oct 19 2003
//:://////////////////////////////////////////////
#include "x2_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
//--------------------------------------------------------------------------
// Spellcast Hook Code
// Added 2003-06-20 by Georg
// If you want to make changes to all spells, check x2_inc_spellhook.nss to
// find out more
//--------------------------------------------------------------------------
if (!X2PreSpellCastCode())
{
return;
}
// End of Spell Cast Hook
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
location lTarget = GetSpellTargetLocation();
effect eStrike = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
int nMetaMagic = GetMetaMagicFeat();
float fDelay;
effect eBeam;
int nDamage;
int nPotential;
effect eDam;
object oLastValid;
effect eStun = EffectLinkEffects(EffectVisualEffect(VFX_IMP_STUN),EffectStunned());
//--------------------------------------------------------------------------
// Calculate Damage Dice. 1d per 2 caster levels, max 5d
//--------------------------------------------------------------------------
int nNumDice = GetCasterLevel(OBJECT_SELF)/2;
if (nNumDice<1)
{
nNumDice = 1;
}
else if (nNumDice >5)
{
nNumDice = 5;
}
//--------------------------------------------------------------------------
// Loop through all targets
//--------------------------------------------------------------------------
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
//------------------------------------------------------------------
// Calculate delay until spell hits current target. If we are the
// first target, the delay is the time until the spell hits us
//------------------------------------------------------------------
if (GetIsObjectValid(oLastValid))
{
fDelay += 0.2f;
fDelay += GetDistanceBetweenLocations(GetLocation(oLastValid), GetLocation(oTarget))/20;
}
else
{
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
}
//------------------------------------------------------------------
// If there was a previous target, draw a lightning beam between us
// and iterate delay so it appears that the beam is jumping from
// target to target
//------------------------------------------------------------------
if (GetIsObjectValid(oLastValid))
{
eBeam = EffectBeam(VFX_BEAM_LIGHTNING, oLastValid, BODY_NODE_CHEST);
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam,oTarget,1.5f));
}
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
nPotential = MaximizeOrEmpower(6, nNumDice, nMetaMagic);
nDamage = GetReflexAdjustedDamage(nPotential, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ELECTRICITY);
//--------------------------------------------------------------
// If we failed the reflex save, we save vs will or are stunned
// for one round
//--------------------------------------------------------------
if (nPotential == nDamage || (GetHasFeat(FEAT_IMPROVED_EVASION,oTarget) && nDamage == (nPotential/2)))
{
if(!MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_MIND_SPELLS, OBJECT_SELF, fDelay))
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eStun,oTarget, RoundsToSeconds(1)));
}
}
if (nDamage >0)
{
eDam = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eStrike, oTarget));
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eDam,oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eStrike,oCaster));
FloatingTextStringOnCreature("The spell 'Gedlee's Electric Loop' is reflected underwater!", oPC);
}
}
}
//------------------------------------------------------------------
// Store Target to make it appear that the lightning bolt is jumping
// from target to target
//------------------------------------------------------------------
oLastValid = oTarget;
}
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE );
}
}

View File

@@ -0,0 +1,173 @@
//::///////////////////////////////////////////////
//:: Great Thunderclap
//:: X2_S0_GrtThdclp
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// You create a loud noise equivalent to a peal of
// thunder and its acommpanying shock wave. The
// spell has three effects. First, all creatures
// in the area must make Will saves to avoid being
// stunned for 1 round. Second, the creatures must
// make Fortitude saves or be deafened for 1 minute.
// Third, they must make Reflex saves or fall prone.
*/
//:://////////////////////////////////////////////
//:: Created By: Andrew Nobbs
//:: Created On: Nov 20, 2002
//:: Updated On: Oct 20, 2003 - some nice Vfx:)
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "x0_i0_spells"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-07-07 by Georg Zoeller
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
int nDamage = 0;
int nDC = GetSpellSaveDC();
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_MYSTICAL_EXPLOSION);
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
effect eVis2 = EffectVisualEffect(VFX_IMP_BLIND_DEAF_M);
effect eVis3 = EffectVisualEffect(VFX_IMP_STUN);
effect eDeaf = EffectDeaf();
effect eKnock = EffectKnockdown();
effect eStun = EffectStunned();
effect eShake = EffectVisualEffect(356);
location lTarget = GetSpellTargetLocation();
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShake, OBJECT_SELF, 2.0f);
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE);
while (GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
{
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if(!MySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SONIC))
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDeaf, oTarget, RoundsToSeconds(10)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eDeaf,oCaster, RoundsToSeconds(10)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis2,oCaster));
FloatingTextStringOnCreature("The spell 'Great Thunderclap' is reflected underwater!", oPC);
}
}
if(!MySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SONIC))
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eStun, oTarget, RoundsToSeconds(1)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eStun,oCaster, RoundsToSeconds(1)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oCaster));
FloatingTextStringOnCreature("The spell 'Great Thunderclap' is reflected underwater!", oPC);
}
}
if(!MySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_SONIC))
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnock, oTarget, 6.0f));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis3, oTarget,4.0f));
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eKnock,oCaster, 6.0f));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis3,oCaster,4.0f));
FloatingTextStringOnCreature("The spell 'Great Thunderclap' is reflected underwater!", oPC);
}
}
}
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Great Thunderclap' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,141 @@
//::///////////////////////////////////////////////
//:: Hellish Inferno
//:: x0_s0_inferno.nss
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
/*
NPC only spell for yaron
like normal inferno but lasts only 5 rounds,
ticks twice per round, adds attack and damage
penalty.
*/
//:://////////////////////////////////////////////
// Georg Z, 19-10-2003
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
#include "x2_i0_spells"
void RunImpact(object oTarget, object oCaster);
void main()
{
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell will fail if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Hellish Inferno' will not work underwater!", oPC);
return;
}
object oTarget = GetSpellTargetObject();
//--------------------------------------------------------------------------
// Spellcast Hook Code
// Added 2003-06-20 by Georg
// If you want to make changes to all spells, check x2_inc_spellhook.nss to
// find out more
//--------------------------------------------------------------------------
if (!X2PreSpellCastCode())
{
return;
}
// End of Spell Cast Hook
//--------------------------------------------------------------------------
// This spell no longer stacks. If there is one hand, that's enough
//--------------------------------------------------------------------------
if (GetHasSpellEffect(GetSpellId(),oTarget))
{
FloatingTextStrRefOnCreature(100775,OBJECT_SELF,FALSE);
return;
}
//--------------------------------------------------------------------------
// Calculate the duration
//--------------------------------------------------------------------------
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF)/2;
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration * 2;
}
if (nDuration < 1)
{
nDuration = 1;
}
if (nDuration >6)
{
nDuration= 6;
}
//--------------------------------------------------------------------------
// Flamethrower VFX, thanks to Alex
//--------------------------------------------------------------------------
effect eRay = EffectBeam(444,OBJECT_SELF,BODY_NODE_CHEST);
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
float fDelay = GetDistanceBetween(oTarget, OBJECT_SELF)/13;
if(!MyResistSpell(OBJECT_SELF, oTarget))
{
//----------------------------------------------------------------------
// Engulf the target in flame
//----------------------------------------------------------------------
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 3.0f);
effect eAttackDec = EffectAttackDecrease(4);
effect eDamageDec = EffectDamageDecrease(4);
effect eLink = EffectLinkEffects(eAttackDec, eDamageDec);
effect eDur = EffectVisualEffect(498);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eDur,oTarget,RoundsToSeconds(nDuration)));
object oSelf = OBJECT_SELF; // because OBJECT_SELF is a function
DelayCommand(fDelay,RunImpact(oTarget, oSelf));
}
else
{
//----------------------------------------------------------------------
// Indicate Failure
//----------------------------------------------------------------------
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 2.0f);
effect eSmoke = EffectVisualEffect(VFX_IMP_REFLEX_SAVE_THROW_USE);
DelayCommand(fDelay+0.3f,ApplyEffectToObject(DURATION_TYPE_INSTANT,eSmoke,oTarget));
}
}
void RunImpact(object oTarget, object oCaster)
{
//--------------------------------------------------------------------------
// Check if the spell has expired (check also removes effects)
//--------------------------------------------------------------------------
if (GZGetDelayedSpellEffectsExpired(762,oTarget,oCaster))
{
return;
}
if (GetIsDead(oTarget) == FALSE)
{
//* GZ: Removed Meta magic, does not work in delayed functions
effect eDam = EffectDamage(d6(2), DAMAGE_TYPE_FIRE);
effect eDam2 = EffectDamage(d6(1), DAMAGE_TYPE_DIVINE);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
eDam = EffectLinkEffects(eVis,eDam); // flare up
ApplyEffectToObject (DURATION_TYPE_INSTANT,eDam,oTarget);
ApplyEffectToObject (DURATION_TYPE_INSTANT,eDam2,oTarget);
DelayCommand(3.0f,RunImpact(oTarget,oCaster));
}
}

View File

@@ -0,0 +1,157 @@
//::///////////////////////////////////////////////
//:: Horizikaul's Boom
//:: X2_S0_HoriBoom
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// You blast the target with loud and high-pitched
// sounds. The target takes 1d4 points of sonic
// damage per two caster levels (maximum 5d4) and
// must make a Will save or be deafened for 1d4
// rounds.
*/
//:://////////////////////////////////////////////
//:: Created By: Andrew Nobbs
//:: Created On: Nov 22, 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs, 02/06/2003
#include "NW_I0_SPELLS"
#include "x0_i0_spells"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-07-07 by Georg Zoeller
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables ( fDist / (3.0f * log( fDist ) + 2.0f) )
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject();
int nCasterLvl = GetCasterLevel(OBJECT_SELF)/2;
int nRounds = d4(1);
int nMetaMagic = GetMetaMagicFeat();
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
effect eDeaf = EffectDeaf();
//Minimum caster level of 1, maximum of 15.
if(nCasterLvl == 0)
{
nCasterLvl = 1;
}
else if (nCasterLvl > 5)
{
nCasterLvl = 5;
}
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
if(!MyResistSpell(OBJECT_SELF, oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
//Roll damage
int nDam = d4(nCasterLvl);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDam = 4 * nCasterLvl; //Damage is at max
}
if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDam = nDam + nDam/2; //Damage/Healing is +50%
}
//Set damage effect
effect eDam = EffectDamage(nDam, DAMAGE_TYPE_SONIC);
//Apply the MIRV and damage effect
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,eDam,oCaster);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oCaster);
FloatingTextStringOnCreature("The spell 'Horizikaul's Boom' is reflected underwater!", oPC);
}
if(!MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_MIND_SPELLS))
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDeaf, oTarget, RoundsToSeconds(nRounds));
}
}
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Horizikaul's Boom' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,112 @@
//::///////////////////////////////////////////////
//:: Scintillating Sphere
//:: X2_S0_ScntSphere
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// A scintillating sphere is a burst of electricity
// that detonates with a low roar and inflicts 1d6
// points of damage per caster level (maximum of 10d6)
// to all creatures within the area. Unattended objects
// also take damage. The explosion creates almost no pressure.
*/
//:://////////////////////////////////////////////
//:: Created By: Andrew Nobbs
//:: Created On: Nov 25 , 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs, 02/06/2003
#include "NW_I0_SPELLS"
#include "x0_i0_spells"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-07-07 by Georg Zoeller
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
int nCasterLvl = GetCasterLevel(oCaster);
int nMetaMagic = GetMetaMagicFeat();
int nDamage;
float fDelay;
effect eExplode = EffectVisualEffect(459);
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = GetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 10)
{
nCasterLvl = 10;
}
//Apply the fireball explosion at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
{
//Roll damage for each target
nDamage = d6(nCasterLvl);
//Resolve metamagic
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6 * nCasterLvl;
}
else if (nMetaMagic == METAMAGIC_EMPOWER)
{
nDamage = nDamage + nDamage / 2;
}
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ELECTRICITY);
//Set the damage effect
eDam = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eDam,oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oCaster));
FloatingTextStringOnCreature("The spell 'Scintillating Sphere' is reflected underwater!", oPC);
}
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
}

View File

@@ -12,26 +12,26 @@
8 Rogue 112195 16 17 4898 248 IR_ROGUE 6 CLS_ATK_2 CLS_FEAT_ROG CLS_SAVTHR_ROG CLS_SKILL_ROG CLS_BFEAT_ROG 8 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ROGUE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ROG 0 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 8 Rogue 112195 16 17 4898 248 IR_ROGUE 6 CLS_ATK_2 CLS_FEAT_ROG CLS_SAVTHR_ROG CLS_SKILL_ROG CLS_BFEAT_ROG 8 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ROGUE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ROG 0 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
9 Sorcerer 112196 18 19 4899 249 IR_SORCERER 4 CLS_ATK_3 CLS_FEAT_SORC CLS_SAVTHR_SORC CLS_SKILL_SORC CLS_BFEAT_SORC 2 CLS_SPGN_SORC CLS_SPKN_SORC 1 1 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SORCERER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SORC 0 1 0 0 -1 9 131 **** 0 1 0 0 0 1 1 CHA Wiz_Sorc 1 1 1 0 0 9 Sorcerer 112196 18 19 4899 249 IR_SORCERER 4 CLS_ATK_3 CLS_FEAT_SORC CLS_SAVTHR_SORC CLS_SKILL_SORC CLS_BFEAT_SORC 2 CLS_SPGN_SORC CLS_SPKN_SORC 1 1 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SORCERER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SORC 0 1 0 0 -1 9 131 **** 0 1 0 0 0 1 1 CHA Wiz_Sorc 1 1 1 0 0
10 Wizard 112197 20 21 4900 250 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_WIZ CLS_SAVTHR_WIZ CLS_SKILL_WIZ CLS_BFEAT_WIZ 2 CLS_SPGN_WIZ **** 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_WIZARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WIZ 0 1 0 0 -1 10 209 **** 1 1 0 1 1 1 1 INT Wiz_Sorc 1 1 1 0 0 10 Wizard 112197 20 21 4900 250 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_WIZ CLS_SAVTHR_WIZ CLS_SKILL_WIZ CLS_BFEAT_WIZ 2 CLS_SPGN_WIZ **** 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_WIZARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WIZ 0 1 0 0 -1 10 209 **** 1 1 0 1 1 1 1 INT Wiz_Sorc 1 1 1 0 0
11 Aberration 112198 525 525 4901 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_ABER CLS_SAVTHR_WIZ CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 14 14 11 14 3 5 STR 0X00 0X0 0 CLASS_TYPE_ABERRATION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ABER 0 0 0 0 -1 73 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 11 Aberration 112198 525 525 4901 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_ABER CLS_SAVTHR_WIZ CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 14 14 11 14 3 5 STR 0X00 0X0 0 CLASS_TYPE_ABERRATION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ABER 0 0 0 0 -1 73 0 **** **** **** **** **** **** **** **** **** Aberration **** **** **** **** ****
12 Animal 112199 526 526 4902 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 13 17 15 12 2 6 STR 0X00 0X0 0 CLASS_TYPE_ANIMAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ANI 0 0 0 0 -1 74 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 12 Animal 112199 526 526 4902 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 13 17 15 12 2 6 STR 0X00 0X0 0 CLASS_TYPE_ANIMAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ANI 0 0 0 0 -1 74 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
13 Construct 112200 528 528 4903 8154 IR_WIZARD 10 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_CONS CLS_SKILL_CREA CLS_BFEAT_BARB 0 **** **** 1 0 21 9 10 11 10 3 STR 0X00 0X0 0 CLASS_TYPE_CONSTRUCT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CON 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 13 Construct 112200 528 528 4903 8154 IR_WIZARD 10 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_CONS CLS_SKILL_CREA CLS_BFEAT_BARB 0 **** **** 1 0 21 9 10 11 10 3 STR 0X00 0X0 0 CLASS_TYPE_CONSTRUCT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CON 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14 Humanoid 112201 1763 1764 4904 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 6 **** **** 1 0 15 10 13 11 8 8 STR 0X00 0X0 0 CLASS_TYPE_HUMANOID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HUM 0 0 0 0 -1 76 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 14 Humanoid 112201 1763 1764 4904 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 6 **** **** 1 0 15 10 13 11 8 8 STR 0X00 0X0 0 CLASS_TYPE_HUMANOID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HUM 0 0 0 0 -1 76 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
15 Monstrous 112202 536 536 4905 8154 IR_WIZARD 8 CLS_ATK_1 CLS_FEAT_MONHUM CLS_SAVTHR_BARD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 19 10 15 10 7 8 STR 0X00 0X0 0 CLASS_TYPE_MONSTEROUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MON 0 0 0 0 -1 77 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 15 Monstrous 112202 536 536 4905 8154 IR_WIZARD 8 CLS_ATK_1 CLS_FEAT_MONHUM CLS_SAVTHR_BARD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 19 10 15 10 7 8 STR 0X00 0X0 0 CLASS_TYPE_MONSTEROUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MON 0 0 0 0 -1 77 0 **** **** **** **** **** **** **** **** **** Monstrous **** **** **** **** ****
16 Elemental 112203 539 539 4906 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 17 8 13 11 4 11 STR 0X00 0X0 0 CLASS_TYPE_ELEMENTAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ELE 0 0 0 0 -1 78 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 16 Elemental 112203 539 539 4906 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 17 8 13 11 4 11 STR 0X00 0X0 0 CLASS_TYPE_ELEMENTAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ELE 0 0 0 0 -1 78 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
17 Fey 112204 540 540 4907 8154 IR_WIZARD 6 CLS_ATK_3 CLS_FEAT_FEY CLS_SAVTHR_BARD CLS_SKILL_FEY CLS_BFEAT_BARB 6 **** **** 1 0 10 15 11 15 14 18 DEX 0X00 0X0 0 CLASS_TYPE_FEY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FEY 0 0 0 0 -1 79 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 17 Fey 112204 540 540 4907 8154 IR_WIZARD 6 CLS_ATK_3 CLS_FEAT_FEY CLS_SAVTHR_BARD CLS_SKILL_FEY CLS_BFEAT_BARB 6 **** **** 1 0 10 15 11 15 14 18 DEX 0X00 0X0 0 CLASS_TYPE_FEY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FEY 0 0 0 0 -1 79 0 **** **** **** **** **** **** **** **** **** Fey **** **** **** **** ****
18 Dragon 112205 529 529 4908 8154 IR_DRGNFIREADPT 12 CLS_ATK_1 CLS_FEAT_DRAG CLS_SAVTHR_MONK CLS_SKILL_DRAGON CLS_BFEAT_BARB 6 **** **** 1 0 13 10 13 10 11 10 STR 0X00 0X0 0 CLASS_TYPE_DRAGON 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRAG 0 0 0 0 -1 80 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 18 Dragon 112205 529 529 4908 8154 IR_DRGNFIREADPT 12 CLS_ATK_1 CLS_FEAT_DRAG CLS_SAVTHR_MONK CLS_SKILL_DRAGON CLS_BFEAT_BARB 6 **** **** 1 0 13 10 13 10 11 10 STR 0X00 0X0 0 CLASS_TYPE_DRAGON 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRAG 0 0 0 0 -1 80 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
19 Undead 112206 547 547 4909 8154 IR_WIZARD 12 CLS_ATK_3 CLS_FEAT_CREA CLS_SAVTHR_WIZ CLS_SKILL_CREA CLS_BFEAT_BARB 4 **** **** 1 0 10 12 10 10 10 11 STR 0X00 0X0 0 CLASS_TYPE_UNDEAD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UNDEAD 0 0 0 0 -1 81 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 19 Undead 112206 547 547 4909 8154 IR_WIZARD 12 CLS_ATK_3 CLS_FEAT_CREA CLS_SAVTHR_WIZ CLS_SKILL_CREA CLS_BFEAT_BARB 4 **** **** 1 0 10 12 10 10 10 11 STR 0X00 0X0 0 CLASS_TYPE_UNDEAD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UNDEAD 0 0 0 0 -1 81 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
20 Commoner 112207 2291 2292 4910 8155 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_COMM CLS_SAVTHR_CONS CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 10 10 12 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_COMMONER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 **** 0 0 0 0 -1 82 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 20 Commoner 112207 2291 2292 4910 8155 IR_WIZARD 4 CLS_ATK_3 CLS_FEAT_COMM CLS_SAVTHR_CONS CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 10 10 12 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_COMMONER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 **** 0 0 0 0 -1 82 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
21 Beast 112208 527 527 4911 8154 IR_WIZARD 10 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 16 13 16 3 12 8 STR 0X00 0X0 0 CLASS_TYPE_BEAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEAST 0 0 0 0 -1 83 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 21 Beast 112208 527 527 4911 8154 IR_WIZARD 10 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 16 13 16 3 12 8 STR 0X00 0X0 0 CLASS_TYPE_BEAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEAST 0 0 0 0 -1 83 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
22 Giant 112209 541 541 4912 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_GIAN CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 25 8 19 10 6 17 STR 0X00 0X0 0 CLASS_TYPE_GIANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_GIANT 0 0 0 0 -1 84 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 22 Giant 112209 541 541 4912 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_GIAN CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 25 8 19 10 6 17 STR 0X00 0X0 0 CLASS_TYPE_GIANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_GIANT 0 0 0 0 -1 84 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
23 MagicBeast 112210 542 542 4913 8154 IR_WIZARD 10 CLS_ATK_1 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 15 8 15 12 2 10 STR 0X00 0X0 0 CLASS_TYPE_MAGICAL_BEAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAGBST 0 0 0 0 -1 85 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 23 MagicBeast 112210 542 542 4913 8154 IR_WIZARD 10 CLS_ATK_1 CLS_FEAT_CREA CLS_SAVTHR_WILD CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 15 8 15 12 2 10 STR 0X00 0X0 0 CLASS_TYPE_MAGICAL_BEAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAGBST 0 0 0 0 -1 85 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
24 Outsider 112211 4812 4812 4914 8154 IR_WIZARD 8 CLS_ATK_1 CLS_FEAT_OUTS CLS_SAVTHR_MONK CLS_SKILL_OUTS CLS_BFEAT_BARB 8 **** **** 1 0 15 10 13 13 10 12 STR 0X00 0X0 0 CLASS_TYPE_OUTSIDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OUTS 0 0 0 0 -1 86 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 24 Outsider 112211 4812 4812 4914 8154 IR_WIZARD 8 CLS_ATK_1 CLS_FEAT_OUTS CLS_SAVTHR_MONK CLS_SKILL_OUTS CLS_BFEAT_BARB 8 **** **** 1 0 15 10 13 13 10 12 STR 0X00 0X0 0 CLASS_TYPE_OUTSIDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OUTS 0 0 0 0 -1 86 0 **** **** **** **** **** **** **** **** **** Outsider **** **** **** **** ****
25 Shapechanger 112212 546 546 4915 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_SHCHNG CLS_SAVTHR_MONK CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 15 11 17 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SHAPECHANGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHAPE 0 0 0 0 -1 87 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 25 Shapechanger 112212 546 546 4915 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_SHCHNG CLS_SAVTHR_MONK CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 1 0 15 11 17 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SHAPECHANGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHAPE 0 0 0 0 -1 87 0 **** **** **** **** **** **** **** **** **** Shapechanger **** **** **** **** ****
26 Vermin 112213 548 548 4916 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 11 17 12 10 10 3 STR 0X00 0X0 0 CLASS_TYPE_VERMIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VERMIN 0 0 0 0 -1 88 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 26 Vermin 112213 548 548 4916 8154 IR_WIZARD 8 CLS_ATK_2 CLS_FEAT_CREA CLS_SAVTHR_FIGHT CLS_SKILL_CREA CLS_BFEAT_BARB 2 **** **** 0 0 11 17 12 10 10 3 STR 0X00 0X0 0 CLASS_TYPE_VERMIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VERMIN 0 0 0 0 -1 88 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
27 Shadowdancer 112214 2944 2945 2946 2947 IR_X1_SHADOW 8 CLS_ATK_2 CLS_FEAT_SHADOW CLS_SAVTHR_ROG CLS_SKILL_SHADOW CLS_BFEAT_SHADOW 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWDANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHADOW 40 0 0 0 10 63 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 27 Shadowdancer 112214 2944 2945 2946 2947 IR_X1_SHADOW 8 CLS_ATK_2 CLS_FEAT_SHADOW CLS_SAVTHR_ROG CLS_SKILL_SHADOW CLS_BFEAT_SHADOW 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWDANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHADOW 40 0 0 0 10 63 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
28 Harper 112215 2956 2957 2958 2959 IR_X1_HARPER 6 CLS_ATK_2 CLS_FEAT_HARPER CLS_SAVTHR_BARD CLS_SKILL_HARPER CLS_BFEAT_HARPER 4 CLS_SPGN_HARPER CLS_SPKN_HARPER 0 1 12 16 14 8 14 12 DEX 0X10 0X2 0 CLASS_TYPE_HARPER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HARPER 5 0 0 0 5 64 130 **** **** **** **** **** **** **** **** **** Harper **** **** **** **** **** 28 Harper 112215 2956 2957 2958 2959 IR_X1_HARPER 6 CLS_ATK_2 CLS_FEAT_HARPER CLS_SAVTHR_BARD CLS_SKILL_HARPER CLS_BFEAT_HARPER 4 CLS_SPGN_HARPER CLS_SPKN_HARPER 0 1 12 16 14 8 14 12 DEX 0X10 0X2 0 CLASS_TYPE_HARPER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HARPER 5 0 0 0 5 64 130 **** **** **** **** **** **** **** **** **** Harper **** **** **** **** ****
29 Arcane_Archer 112216 9003 9004 9005 9006 IR_ARCHER 8 CLS_ATK_1 CLS_FEAT_ARCHER CLS_SAVTHR_WILD CLS_SKILL_ARCHER CLS_BFEAT_ARCHER 4 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ARCANE_ARCHER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCHER 40 0 0 0 10 65 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 29 Arcane_Archer 112216 9003 9004 9005 9006 IR_ARCHER 8 CLS_ATK_1 CLS_FEAT_ARCHER CLS_SAVTHR_WILD CLS_SKILL_ARCHER CLS_BFEAT_ARCHER 4 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_ARCANE_ARCHER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCHER 40 0 0 0 10 65 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
30 Assassin 112217 9007 9008 9009 16790386 IR_ASASIN 6 CLS_ATK_2 CLS_FEAT_ASASIN CLS_SAVTHR_ROG CLS_SKILL_ASASIN CLS_BFEAT_ASASIN 4 CLS_SPGN_ASASIN CLS_SPKN_ASASIN 1 1 12 16 14 8 14 12 DEX 0X09 0X2 0 CLASS_TYPE_ASSASSIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ASASIN 40 0 0 0 10 66 131 **** **** **** **** **** **** **** **** **** Assassin **** **** **** **** **** 30 Assassin 112217 9007 9008 9009 16790386 IR_ASASIN 6 CLS_ATK_2 CLS_FEAT_ASASIN CLS_SAVTHR_ROG CLS_SKILL_ASASIN CLS_BFEAT_ASASIN 4 CLS_SPGN_ASASIN **** 1 1 12 16 14 8 14 12 DEX 0X09 0X2 0 CLASS_TYPE_ASSASSIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ASASIN 40 0 0 0 10 66 131 **** 1 1 0 0 1 1 1 INT Assassin 1 1 255 0 0
31 Blackguard 112218 9011 9012 9013 16790387 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_BLKGRD CLS_SAVTHR_FIGHT CLS_SKILL_BLKGRD CLS_BFEAT_BLKGRD 2 CLS_SPGN_BLKGRD **** 1 1 12 16 14 8 14 12 CON 0X09 0X2 0 CLASS_TYPE_BLACKGUARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLKGRD 40 0 0 0 10 67 0 **** 1 0 0 0 0 0 0 WIS Blackguard 1 1 255 0 0 31 Blackguard 112218 9011 9012 9013 16790387 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_BLKGRD CLS_SAVTHR_FIGHT CLS_SKILL_BLKGRD CLS_BFEAT_BLKGRD 2 CLS_SPGN_BLKGRD **** 1 1 12 16 14 8 14 12 CON 0X09 0X2 0 CLASS_TYPE_BLACKGUARD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLKGRD 40 0 0 0 10 67 0 **** 1 0 0 0 0 0 0 WIS Blackguard 1 1 255 0 0
32 Champion_Torm 112219 9015 9016 9017 9018 IR_DIVCHA 10 CLS_ATK_1 CLS_FEAT_DIVCHA CLS_SAVTHR_WILD CLS_SKILL_DIVCHA CLS_BFEAT_DIVCHA 2 **** **** 0 0 12 16 14 8 14 12 CHA 0X10 0X2 0 CLASS_TYPE_DIVINE_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIVCHA 40 0 0 0 10 109 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 32 Champion_Torm 112219 9015 9016 9017 9018 IR_DIVCHA 10 CLS_ATK_1 CLS_FEAT_DIVCHA CLS_SAVTHR_WILD CLS_SKILL_DIVCHA CLS_BFEAT_DIVCHA 2 **** **** 0 0 12 16 14 8 14 12 CHA 0X10 0X2 0 CLASS_TYPE_DIVINE_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIVCHA 40 0 0 0 10 109 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
33 WeaponMaster 112220 9019 9019 9021 9022 IR_WM 10 CLS_ATK_1 CLS_FEAT_WM CLS_SAVTHR_ROG CLS_SKILL_WM CLS_BFEAT_WM 2 **** **** 1 0 12 16 14 8 14 12 STR 0X00 0X0 0 CLASS_TYPE_WEAPON_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WM 40 0 0 0 10 112 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 33 WeaponMaster 112220 9019 9019 9021 9022 IR_WM 10 CLS_ATK_1 CLS_FEAT_WM CLS_SAVTHR_ROG CLS_SKILL_WM CLS_BFEAT_WM 2 **** **** 1 0 12 16 14 8 14 12 STR 0X00 0X0 0 CLASS_TYPE_WEAPON_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WM 40 0 0 0 10 112 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -40,7 +40,7 @@
36 Dwarven_Defender 112223 76418 76419 76420 76422 IR_DWDEF 12 CLS_ATK_1 CLS_FEAT_DWDEF CLS_SAVTHR_CLER CLS_SKILL_DWDEF CLS_BFEAT_DWDEF 2 **** **** 1 0 16 8 15 14 10 12 STR 0X05 0X1 0 CLASS_TYPE_DWARVEN_DEFENDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DWDEF 40 0 0 0 10 89 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 36 Dwarven_Defender 112223 76418 76419 76420 76422 IR_DWDEF 12 CLS_ATK_1 CLS_FEAT_DWDEF CLS_SAVTHR_CLER CLS_SKILL_DWDEF CLS_BFEAT_DWDEF 2 **** **** 1 0 16 8 15 14 10 12 STR 0X05 0X1 0 CLASS_TYPE_DWARVEN_DEFENDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DWDEF 40 0 0 0 10 89 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
37 Dragon_Disciple 112224 16832127 16832128 16832129 16832130 IR_DRAGOND 6 CLS_ATK_2 CLS_FEAT_DRADIS CLS_SAVTHR_CLER CLS_SKILL_DRADIS CLS_BFEAT_DRADIS 2 **** **** 1 0 14 8 14 16 10 14 STR 0X00 0X0 0 CLASS_TYPE_DRAGON_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRADIS 40 0 0 0 10 111 0 cls_stat_dradis **** **** **** **** **** **** **** **** **** **** **** **** **** **** 37 Dragon_Disciple 112224 16832127 16832128 16832129 16832130 IR_DRAGOND 6 CLS_ATK_2 CLS_FEAT_DRADIS CLS_SAVTHR_CLER CLS_SKILL_DRADIS CLS_BFEAT_DRADIS 2 **** **** 1 0 14 8 14 16 10 14 STR 0X00 0X0 0 CLASS_TYPE_DRAGON_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DRADIS 40 0 0 0 10 111 0 cls_stat_dradis **** **** **** **** **** **** **** **** **** **** **** **** **** ****
38 Ooze 112225 84438 84438 84437 8154 IR_CLERIC 10 CLS_ATK_2 CLS_FEAT_CLER CLS_SAVTHR_CLER CLS_SKILL_CLER CLS_BFEAT_CLER 0 **** **** 0 0 14 8 14 16 10 14 STR 0X00 0X0 0 CLASS_TYPE_OOZE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOZE 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 38 Ooze 112225 84438 84438 84437 8154 IR_CLERIC 10 CLS_ATK_2 CLS_FEAT_CLER CLS_SAVTHR_CLER CLS_SKILL_CLER CLS_BFEAT_CLER 0 **** **** 0 0 14 8 14 16 10 14 STR 0X00 0X0 0 CLASS_TYPE_OOZE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOZE 0 0 0 0 -1 75 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
39 Eye_of_Gruumsh 16790665 16824294 16824295 16824296 16824297 IR_GRUUMSH 12 CLS_ATK_1 CLS_FEAT_EOG CLS_SAVTHR_BARB CLS_SKILL_EOG CLS_BFEAT_EOG 2 **** **** 1 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_PRC_EYE_OF_GRUUMSH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EOG 40 0 0 0 10 17 0 cls_stat_eog **** **** **** **** **** **** **** **** **** **** **** **** **** **** 39 Eye_of_Gruumsh 16790665 16824294 16824295 16824296 16824297 IR_GRUUMSH 12 CLS_ATK_1 CLS_FEAT_EOG CLS_SAVTHR_BARB CLS_SKILL_EOG CLS_BFEAT_EOG 2 **** **** 0 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_PRC_EYE_OF_GRUUMSH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EOG 40 0 0 0 10 17 0 cls_stat_eog **** **** **** **** **** **** **** **** **** **** **** **** **** ****
40 Shou_Disciple 16790649 16823346 16823347 16823348 16823349 IR_SHOUDISC 10 CLS_ATK_1 CLS_FEAT_SHOU CLS_SAVTHR_WILD CLS_SKILL_SHOU CLS_BFEAT_SHOU 2 **** **** 0 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_SHOU 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHOU 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 40 Shou_Disciple 16790649 16823346 16823347 16823348 16823349 IR_SHOUDISC 10 CLS_ATK_1 CLS_FEAT_SHOU CLS_SAVTHR_WILD CLS_SKILL_SHOU CLS_BFEAT_SHOU 2 **** **** 0 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_SHOU 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHOU 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
41 Purple_Dragon_Knight 112226 111710 111711 111712 111713 IR_PDK 10 CLS_ATK_1 CLS_FEAT_PDK CLS_SAVTHR_FIGHT CLS_SKILL_PDK CLS_BFEAT_PDK 2 **** **** 0 0 12 16 14 8 14 12 STR 0X14 0X3 0 CLASS_TYPE_PDK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PDK 5 0 0 0 5 131 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 41 Purple_Dragon_Knight 112226 111710 111711 111712 111713 IR_PDK 10 CLS_ATK_1 CLS_FEAT_PDK CLS_SAVTHR_FIGHT CLS_SKILL_PDK CLS_BFEAT_PDK 2 **** **** 0 0 12 16 14 8 14 12 STR 0X14 0X3 0 CLASS_TYPE_PDK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PDK 5 0 0 0 5 131 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
42 UrPriest 16790529 16835606 16835607 16835608 16835609 IR_WARLOCK 8 CLS_ATK_2 CLS_FEAT_URPRST CLS_SAVTHR_WIZ CLS_SKILL_URPRST CLS_BFEAT_URPRST 2 CLS_SPGN_BLIGHT **** 1 1 15 9 14 13 10 15 WIS 0X09 0X2 0 CLASS_TYPE_UR_PRIEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_URPRST 40 0 0 0 10 10 0 **** 1 0 0 0 0 0 0 WIS Cleric 1 1 255 0 0 42 UrPriest 16790529 16835606 16835607 16835608 16835609 IR_WARLOCK 8 CLS_ATK_2 CLS_FEAT_URPRST CLS_SAVTHR_WIZ CLS_SKILL_URPRST CLS_BFEAT_URPRST 2 CLS_SPGN_BLIGHT **** 1 1 15 9 14 13 10 15 WIS 0X09 0X2 0 CLASS_TYPE_UR_PRIEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_URPRST 40 0 0 0 10 10 0 **** 1 0 0 0 0 0 0 WIS Cleric 1 1 255 0 0
@@ -65,7 +65,7 @@
61 Hexblade 16790548 16823462 16823463 16823464 16823465 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_HEXBL CLS_SAVTHR_CLER CLS_SKILL_HEXBL CLS_BFEAT_HEXBL 2 CLS_SPGN_HEXBL CLS_SPKN_HEXBL 1 1 14 14 14 10 12 14 CHA 0X08 0X2 0 CLASS_TYPE_HEXBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEXBL 0 1 0 0 -1 5 131 **** **** **** **** **** **** **** **** **** Hexblade **** **** **** **** **** 61 Hexblade 16790548 16823462 16823463 16823464 16823465 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_HEXBL CLS_SAVTHR_CLER CLS_SKILL_HEXBL CLS_BFEAT_HEXBL 2 CLS_SPGN_HEXBL CLS_SPKN_HEXBL 1 1 14 14 14 10 12 14 CHA 0X08 0X2 0 CLASS_TYPE_HEXBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEXBL 0 1 0 0 -1 5 131 **** **** **** **** **** **** **** **** **** Hexblade **** **** **** **** ****
62 Duskblade 16790549 16824168 16824169 16824170 16824171 IR_HAVOCMAGE 8 CLS_ATK_1 CLS_FEAT_DUSKBL CLS_SAVTHR_CLER CLS_SKILL_DUSKBL CLS_BFEAT_DUSKBL 2 CLS_SPGN_DUSKBL CLS_SPKN_DUSKBL 1 1 15 12 14 10 15 10 STR 0X00 0X0 0 CLASS_TYPE_DUSKBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DUSKBL 0 1 0 0 -1 5 131 **** **** **** **** **** **** **** **** **** Duskblade **** **** **** **** **** 62 Duskblade 16790549 16824168 16824169 16824170 16824171 IR_HAVOCMAGE 8 CLS_ATK_1 CLS_FEAT_DUSKBL CLS_SAVTHR_CLER CLS_SKILL_DUSKBL CLS_BFEAT_DUSKBL 2 CLS_SPGN_DUSKBL CLS_SPKN_DUSKBL 1 1 15 12 14 10 15 10 STR 0X00 0X0 0 CLASS_TYPE_DUSKBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DUSKBL 0 1 0 0 -1 5 131 **** **** **** **** **** **** **** **** **** Duskblade **** **** **** **** ****
63 Scout 16790550 16822486 16822513 16822514 16822515 IR_ARCHER 8 CLS_ATK_2 CLS_FEAT_SCOUT CLS_SAVTHR_ROG CLS_SKILL_SCOUT CLS_BFEAT_SCOUT 8 **** **** 1 0 12 16 12 14 12 10 DEX 0X00 0X0 0 CLASS_TYPE_SCOUT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCOUT 0 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 63 Scout 16790550 16822486 16822513 16822514 16822515 IR_ARCHER 8 CLS_ATK_2 CLS_FEAT_SCOUT CLS_SAVTHR_ROG CLS_SKILL_SCOUT CLS_BFEAT_SCOUT 8 **** **** 1 0 12 16 12 14 12 10 DEX 0X00 0X0 0 CLASS_TYPE_SCOUT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCOUT 0 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
64 Healer 16790551 16822656 16822657 16822658 16822659 IR_CBTMEDIC 8 CLS_ATK_3 CLS_FEAT_HEALER CLS_SAVTHR_CLER CLS_SKILL_HEALER CLS_BFEAT_HEALER 4 CLS_SPGN_HEALER **** 1 1 10 12 12 15 10 16 WIS 0X11 0X2 0 CLASS_TYPE_HEALER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEALER 0 1 0 0 -1 2 0 **** 1 0 0 0 0 0 0 WIS Healer 1 1 255 0 0 64 Healer 16790551 16822656 16822657 16822658 16822659 IR_CBTMEDIC 8 CLS_ATK_3 CLS_FEAT_HEALER CLS_SAVTHR_CLER CLS_SKILL_HEALER CLS_BFEAT_HEALER 4 CLS_SPGN_HEALER **** 1 1 10 12 12 15 10 16 WIS 0X11 0X2 0 CLASS_TYPE_HEALER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HEALER 0 1 0 0 -1 895 0 **** 1 0 0 0 0 0 0 WIS Healer 1 1 255 0 0
65 Mage_Killer 16790552 16822219 16822220 16822221 16822222 IR_MAGEKILL 4 CLS_ATK_3 CLS_FEAT_MAGEK CLS_SAVTHR_WIZ CLS_SKILL_MAGEK CLS_BFEAT_MAGEK 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_MAGEKILLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAGEK 40 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 65 Mage_Killer 16790552 16822219 16822220 16822221 16822222 IR_MAGEKILL 4 CLS_ATK_3 CLS_FEAT_MAGEK CLS_SAVTHR_WIZ CLS_SKILL_MAGEK CLS_BFEAT_MAGEK 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_MAGEKILLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MAGEK 40 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
66 Harper_Mage 16790553 16822223 16822224 16822225 16822226 IEF_HARPWIZ 4 CLS_ATK_3 CLS_FEAT_HMAGE CLS_SAVTHR_WIZ CLS_SKILL_HMAGE CLS_BFEAT_HMAGE 4 **** **** 0 0 12 16 14 8 14 12 INT 0X10 0X2 0 CLASS_TYPE_HARPERMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HMAGE 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 66 Harper_Mage 16790553 16822223 16822224 16822225 16822226 IEF_HARPWIZ 4 CLS_ATK_3 CLS_FEAT_HMAGE CLS_SAVTHR_WIZ CLS_SKILL_HMAGE CLS_BFEAT_HMAGE 4 **** **** 0 0 12 16 14 8 14 12 INT 0X10 0X2 0 CLASS_TYPE_HARPERMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HMAGE 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
67 Spell_Sword 16790554 16822227 16822228 16822229 16822230 IR_SPELLS 8 CLS_ATK_1 CLS_FEAT_SPELLS CLS_SAVTHR_CLER CLS_SKILL_SPELLS CLS_BFEAT_SPELLS 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_SPELLSWORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPELLS 40 0 2 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 67 Spell_Sword 16790554 16822227 16822228 16822229 16822230 IR_SPELLS 8 CLS_ATK_1 CLS_FEAT_SPELLS CLS_SAVTHR_CLER CLS_SKILL_SPELLS CLS_BFEAT_SPELLS 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_SPELLSWORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPELLS 40 0 2 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -74,13 +74,13 @@
70 Eldritch_Knight 16790557 16822308 16822309 16822310 16822311 IR_ELDKNI 6 CLS_ATK_1 CLS_FEAT_ELDKNI CLS_SAVTHR_FIGHT CLS_SKILL_ELDKNI CLS_BFEAT_ELDKNI 2 **** **** 1 0 14 13 14 10 14 13 INT 0X00 0X0 0 CLASS_TYPE_ELDRITCH_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ELDKNI 40 0 1 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 70 Eldritch_Knight 16790557 16822308 16822309 16822310 16822311 IR_ELDKNI 6 CLS_ATK_1 CLS_FEAT_ELDKNI CLS_SAVTHR_FIGHT CLS_SKILL_ELDKNI CLS_BFEAT_ELDKNI 2 **** **** 1 0 14 13 14 10 14 13 INT 0X00 0X0 0 CLASS_TYPE_ELDRITCH_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ELDKNI 40 0 1 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
71 Elemental_Savant 16790558 16822312 16822313 16822314 16822315 IR_ELEMFIRE 4 CLS_ATK_3 CLS_FEAT_SAVANT CLS_SAVTHR_WIZ CLS_SKILL_SAVANT CLS_BFEAT_SAVANT 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_ELEMENTAL_SAVANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SAVANT 40 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 71 Elemental_Savant 16790558 16822312 16822313 16822314 16822315 IR_ELEMFIRE 4 CLS_ATK_3 CLS_FEAT_SAVANT CLS_SAVTHR_WIZ CLS_SKILL_SAVANT CLS_BFEAT_SAVANT 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_ELEMENTAL_SAVANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SAVANT 40 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
72 Factotum 16790559 16823092 16823093 16823094 16823095 IR_BEGUIL 8 CLS_ATK_2 CLS_FEAT_FACTUM CLS_SAVTHR_ROG CLS_SKILL_FACTUM CLS_BFEAT_FACTUM 6 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_FACTOTUM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FACTUM 20 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 72 Factotum 16790559 16823092 16823093 16823094 16823095 IR_BEGUIL 8 CLS_ATK_2 CLS_FEAT_FACTUM CLS_SAVTHR_ROG CLS_SKILL_FACTUM CLS_BFEAT_FACTUM 6 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_FACTOTUM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FACTUM 20 1 0 0 -1 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
73 CelebrantSharess 16790560 16826321 16826322 16826323 16826324 IR_HEARTW 6 CLS_ATK_3 CLS_FEAT_SHARSS CLS_SAVTHR_WIZ CLS_SKILL_SHARSS CLS_BFEAT_SHARSS 6 CLS_SPGN_SHARSS CLS_SPKN_SHARSS 0 1 12 16 14 8 14 12 CHA 0X13 0X3 0 CLASS_TYPE_CELEBRANT_SHARESS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHARSS 40 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** Celebrant **** **** **** **** **** 73 CelebrantSharess 16790560 16826321 16826322 16826323 16826324 IR_HEARTW 6 CLS_ATK_3 CLS_FEAT_SHARSS CLS_SAVTHR_WIZ CLS_SKILL_SHARSS CLS_BFEAT_SHARSS 6 CLS_SPGN_SHARSS CLS_SPKN_SHARSS 0 1 12 16 14 8 14 12 CHA 0X13 0X3 0 CLASS_TYPE_CELEBRANT_SHARESS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHARSS 40 0 0 0 10 10 0 **** 0 0 0 0 0 1 1 CHA Celebrant **** **** 255 0 ****
74 CultistShatteredPeak 16790561 16789654 16789655 16789656 16789657 IR_SPARCDLST 6 CLS_ATK_2 CLS_FEAT_CULTST CLS_SAVTHR_RANG CLS_SKILL_CULTST CLS_BFEAT_CULTST 6 CLS_SPGN_CULTST **** 0 1 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_CULTIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CULTST 5 0 0 0 5 64 130 **** 1 1 0 0 1 1 1 INT Cultist 1 1 255 0 0 74 CultistShatteredPeak 16790561 16789654 16789655 16789656 16789657 IR_SPARCDLST 6 CLS_ATK_2 CLS_FEAT_CULTST CLS_SAVTHR_RANG CLS_SKILL_CULTST CLS_BFEAT_CULTST 6 CLS_SPGN_CULTST **** 0 1 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_CULTIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CULTST 5 0 0 0 5 64 130 **** 1 1 0 0 1 1 1 INT Cultist 1 1 255 0 0
75 Forsaker 16790562 16847610 16847611 16847612 16847613 IC_LEGDREAD 12 CLS_ATK_1 CLS_FEAT_FORSAK CLS_SAVTHR_CLER CLS_SKILL_FORSAK CLS_BFEAT_FORSAK 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_FORSAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FORSAK 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 75 Forsaker 16790562 16847610 16847611 16847612 16847613 IC_LEGDREAD 12 CLS_ATK_1 CLS_FEAT_FORSAK CLS_SAVTHR_CLER CLS_SKILL_FORSAK CLS_BFEAT_FORSAK 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_FORSAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FORSAK 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
76 Incarnate 16790563 16836706 16836707 16836708 16836709 IR_PSION 6 CLS_ATK_3 CLS_FEAT_INCARN CLS_SAVTHR_CLER CLS_SKILL_INCARN CLS_BFEAT_INCARN 2 **** **** 1 0 10 14 14 12 16 10 INT 0X01 0X3 1 CLASS_TYPE_INCARNATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_INCARN 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 76 Incarnate 16790563 16836706 16836707 16836708 16836709 IR_PSION 6 CLS_ATK_3 CLS_FEAT_INCARN CLS_SAVTHR_CLER CLS_SKILL_INCARN CLS_BFEAT_INCARN 2 **** **** 1 0 10 14 14 12 16 10 INT 0X01 0X3 1 CLASS_TYPE_INCARNATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_INCARN 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
77 Soulborn 16790564 16836718 16836719 16836720 16836721 IR_SOULKNIFE 10 CLS_ATK_1 CLS_FEAT_SOULBN CLS_SAVTHR_FIGHT CLS_SKILL_SOULBN CLS_BFEAT_SOULBN 2 **** **** 1 0 16 13 16 10 10 9 STR 0X01 0X3 0 CLASS_TYPE_SOULBORN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULBN 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 77 Soulborn 16790564 16836718 16836719 16836720 16836721 IR_SOULKNIFE 10 CLS_ATK_1 CLS_FEAT_SOULBN CLS_SAVTHR_FIGHT CLS_SKILL_SOULBN CLS_BFEAT_SOULBN 2 **** **** 1 0 16 13 16 10 10 9 STR 0X01 0X3 0 CLASS_TYPE_SOULBORN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULBN 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
78 Totemist 16790565 16836722 16836723 16836724 16836725 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_TOTEM CLS_SAVTHR_RANG CLS_SKILL_TOTEM CLS_BFEAT_TOTEM 4 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_TOTEMIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOTEM 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 78 Totemist 16790565 16836722 16836723 16836724 16836725 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_TOTEM CLS_SAVTHR_RANG CLS_SKILL_TOTEM CLS_BFEAT_TOTEM 4 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_TOTEMIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOTEM 0 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
79 Beguiler 16790566 16789870 16789871 16789872 16789873 IR_BEGUIL 6 CLS_ATK_3 CLS_FEAT_BEGUIL CLS_SAVTHR_WIZ CLS_SKILL_BEGUIL CLS_BFEAT_BEGUIL 6 CLS_SPGN_BEGUIL CLS_SPKN_BEGUIL 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_BEGUILER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEGUIL 20 1 0 0 -1 8 130 **** **** **** **** **** **** **** **** **** Beguiler **** **** **** **** **** 79 Beguiler 16790566 16789870 16789871 16789872 16789873 IR_BEGUIL 6 CLS_ATK_3 CLS_FEAT_BEGUIL CLS_SAVTHR_WIZ CLS_SKILL_BEGUIL CLS_BFEAT_BEGUIL 6 CLS_SPGN_BEGUIL CLS_SPKN_BEGUIL 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_BEGUILER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BEGUIL 20 1 0 0 -1 700 130 **** **** **** **** **** **** **** **** **** Beguiler **** **** **** **** ****
80 Duelist 16790567 16822716 16822717 16822718 16822719 IR_DUEL 10 CLS_ATK_1 CLS_FEAT_DUEL CLS_SAVTHR_ROG CLS_SKILL_DUEL CLS_BFEAT_DUEL 4 **** **** 1 0 14 16 14 8 14 10 DEX 0X00 0X0 0 CLASS_TYPE_DUELIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DUEL 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 80 Duelist 16790567 16822716 16822717 16822718 16822719 IR_DUEL 10 CLS_ATK_1 CLS_FEAT_DUEL CLS_SAVTHR_ROG CLS_SKILL_DUEL CLS_BFEAT_DUEL 4 **** **** 1 0 14 16 14 8 14 10 DEX 0X00 0X0 0 CLASS_TYPE_DUELIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DUEL 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
81 Hierophant 16790568 16822744 16822745 16822746 16822747 IR_HIERO 8 CLS_ATK_2 CLS_FEAT_HIERO CLS_SAVTHR_CLER CLS_SKILL_HIERO CLS_BFEAT_HIERO 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_HIEROPHANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HIERO 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 81 Hierophant 16790568 16822744 16822745 16822746 16822747 IR_HIERO 8 CLS_ATK_2 CLS_FEAT_HIERO CLS_SAVTHR_CLER CLS_SKILL_HIERO CLS_BFEAT_HIERO 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_HIEROPHANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HIERO 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
82 RedAvenger 16790569 16822765 16822766 16822767 16822768 IR_REDAVNG 8 CLS_ATK_2 CLS_FEAT_REDAV CLS_SAVTHR_MONK CLS_SKILL_REDAV CLS_BFEAT_REDAV 4 **** **** 1 0 14 14 14 15 10 10 DEX 0X00 0X0 0 CLASS_TYPE_RED_AVENGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_REDAV 40 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 82 RedAvenger 16790569 16822765 16822766 16822767 16822768 IR_REDAVNG 8 CLS_ATK_2 CLS_FEAT_REDAV CLS_SAVTHR_MONK CLS_SKILL_REDAV CLS_BFEAT_REDAV 4 **** **** 1 0 14 14 14 15 10 10 DEX 0X00 0X0 0 CLASS_TYPE_RED_AVENGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_REDAV 40 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -97,12 +97,12 @@
93 SublimeChord 16790580 16829452 16829453 16829454 16829455 IR_X1_HARPER 6 CLS_ATK_3 CLS_FEAT_SCHORD CLS_SAVTHR_WIZ CLS_SKILL_SCHORD CLS_BFEAT_SCHORD 4 CLS_SPGN_SCHORD CLS_SPKN_SCHORD 1 1 10 14 12 10 14 16 CHA 0X00 0X0 0 CLASS_TYPE_SUBLIME_CHORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCHORD 40 0 0 0 10 46 131 **** **** **** **** **** **** **** **** **** SublimeCh **** **** **** **** **** 93 SublimeChord 16790580 16829452 16829453 16829454 16829455 IR_X1_HARPER 6 CLS_ATK_3 CLS_FEAT_SCHORD CLS_SAVTHR_WIZ CLS_SKILL_SCHORD CLS_BFEAT_SCHORD 4 CLS_SPGN_SCHORD CLS_SPKN_SCHORD 1 1 10 14 12 10 14 16 CHA 0X00 0X0 0 CLASS_TYPE_SUBLIME_CHORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SCHORD 40 0 0 0 10 46 131 **** **** **** **** **** **** **** **** **** SublimeCh **** **** **** **** ****
94 Artificer 16790581 16827101 16827102 16827103 16827104 **** 6 CLS_ATK_2 CLS_FEAT_ARTI CLS_SAVTHR_WIZ CLS_SKILL_ARTI CLS_BFEAT_ARTI 4 **** **** 0 0 10 14 12 10 16 14 CHA 0X00 0X0 0 CLASS_TYPE_ARTIFICER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARTI 0 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 94 Artificer 16790581 16827101 16827102 16827103 16827104 **** 6 CLS_ATK_2 CLS_FEAT_ARTI CLS_SAVTHR_WIZ CLS_SKILL_ARTI CLS_BFEAT_ARTI 4 **** **** 0 0 10 14 12 10 16 14 CHA 0X00 0X0 0 CLASS_TYPE_ARTIFICER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARTI 0 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
95 Arcane_Duelist 16790582 16823520 16823521 16823522 16823523 IR_SPARCDLST 8 CLS_ATK_3 CLS_FEAT_ADST CLS_SAVTHR_BARD CLS_SKILL_ADST CLS_BFEAT_ADST 4 **** **** 1 0 12 16 14 8 14 12 CHA 0X00 0X0 0 CLASS_TYPE_ARCANE_DUELIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ADST 40 0 0 0 10 **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 95 Arcane_Duelist 16790582 16823520 16823521 16823522 16823523 IR_SPARCDLST 8 CLS_ATK_3 CLS_FEAT_ADST CLS_SAVTHR_BARD CLS_SKILL_ADST CLS_BFEAT_ADST 4 **** **** 1 0 12 16 14 8 14 12 CHA 0X00 0X0 0 CLASS_TYPE_ARCANE_DUELIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ADST 40 0 0 0 10 **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
96 ForceMissileMage 16790583 16836426 16836427 16836428 16836429 IR_HAVOCMAGE 4 CLS_ATK_3 CLS_FEAT_FMM CLS_SAVTHR_ROG CLS_SKILL_FMM CLS_BFEAT_FMM 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X00 0X0 0 CLASS_TYPE_FMM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FMM 5 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 96 ForceMissileMage 16790583 16836426 16836427 16836428 16836429 IR_HAVOCMAGE 4 CLS_ATK_3 CLS_FEAT_FMM CLS_SAVTHR_ROG CLS_SKILL_FMM CLS_BFEAT_FMM 2 **** **** 1 0 12 14 14 10 12 15 INT 0X00 0X0 0 CLASS_TYPE_FMM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FMM 5 0 1 0 5 31 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
97 WildMage 16790584 16836416 16836417 16836418 16836419 IR_WILDER 4 CLS_ATK_3 CLS_FEAT_WILDMG CLS_SAVTHR_ROG CLS_SKILL_WILDMG CLS_BFEAT_WILDMG 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X04 0X0 0 CLASS_TYPE_WILD_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WILDMG 40 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 97 WildMage 16790584 16836416 16836417 16836418 16836419 IR_WILDER 4 CLS_ATK_3 CLS_FEAT_WILDMG CLS_SAVTHR_ROG CLS_SKILL_WILDMG CLS_BFEAT_WILDMG 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X04 0X0 0 CLASS_TYPE_WILD_MAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WILDMG 40 0 1 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
98 Shadowsmith 16790585 16847414 16847415 16847416 16847417 IR_TEMPUS 8 CLS_ATK_1 CLS_FEAT_SHDSMT CLS_SAVTHR_ROG CLS_SKILL_SHDSMT CLS_BFEAT_SHDSMT 6 **** **** 1 0 14 13 14 10 14 13 INT 0x00 0x0 0 CLASS_TYPE_SHADOWSMITH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDSMT 40 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 98 Shadowsmith 16790585 16847414 16847415 16847416 16847417 IR_TEMPUS 8 CLS_ATK_1 CLS_FEAT_SHDSMT CLS_SAVTHR_ROG CLS_SKILL_SHDSMT CLS_BFEAT_SHDSMT 6 **** **** 1 0 14 13 14 10 14 13 INT 0x00 0x0 0 CLASS_TYPE_SHADOWSMITH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDSMT 40 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
99 Abjurant_Champion 16790586 16847652 16847653 16847654 16847655 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_ABCHAM CLS_SAVTHR_WIZ CLS_SKILL_ABCHAM CLS_BFEAT_ABCHAM 2 **** **** 1 0 14 13 14 10 14 13 INT 0X00 0X0 0 CLASS_TYPE_ABJURANT_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ABCHAM 5 0 1 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 99 Abjurant_Champion 16790586 16847652 16847653 16847654 16847655 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_ABCHAM CLS_SAVTHR_WIZ CLS_SKILL_ABCHAM CLS_BFEAT_ABCHAM 2 **** **** 1 0 14 13 14 10 14 13 INT 0X00 0X0 0 CLASS_TYPE_ABJURANT_CHAMPION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ABCHAM 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
100 Archmage 16790587 16825000 16825001 16825002 16825003 IR_EPICSPELL 4 CLS_ATK_3 CLS_FEAT_ARCH CLS_SAVTHR_WIZ CLS_SKILL_ARCH CLS_BFEAT_ARCH 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_ARCHMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCH 5 0 2 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 100 Archmage 16790587 16825000 16825001 16825002 16825003 IR_EPICSPELL 4 CLS_ATK_3 CLS_FEAT_ARCH CLS_SAVTHR_WIZ CLS_SKILL_ARCH CLS_BFEAT_ARCH 2 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_ARCHMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCH 5 0 2 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
101 Oozemaster 16790588 16825036 16825037 16825038 16825039 IR_GENSUMMON 8 CLS_ATK_2 CLS_FEAT_OOZE CLS_SAVTHR_FIGHT CLS_SKILL_OOZE CLS_BFEAT_OOZE 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_OOZEMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOZE 40 0 2 2 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 101 Oozemaster 16790588 16825036 16825037 16825038 16825039 IR_GENSUMMON 8 CLS_ATK_2 CLS_FEAT_OOZE CLS_SAVTHR_FIGHT CLS_SKILL_OOZE CLS_BFEAT_OOZE 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_OOZEMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_OOZEM 40 0 2 2 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
102 Psychic_Rogue 16790589 16835172 16835173 16835174 16835175 IR_PSYWARRIOR 6 CLS_ATK_2 CLS_FEAT_PSYROG CLS_SAVTHR_ROG CLS_SKILL_PSYROG CLS_BFEAT_PSYROG 6 **** **** 1 0 14 12 14 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_PSYROG 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYROG 20 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 102 Psychic_Rogue 16790589 16835172 16835173 16835174 16835175 IR_PSYWARRIOR 6 CLS_ATK_2 CLS_FEAT_PSYROG CLS_SAVTHR_ROG CLS_SKILL_PSYROG CLS_BFEAT_PSYROG 6 **** **** 1 0 14 12 14 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_PSYROG 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYROG 20 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
103 Spelldancer 16790590 16835157 16835158 16835159 16835160 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_SPLDNC CLS_SAVTHR_BARD CLS_SKILL_SPLDNC CLS_BFEAT_SPLDNC 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_SPELLDANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPLDNC 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 103 Spelldancer 16790590 16835157 16835158 16835159 16835160 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_SPLDNC CLS_SAVTHR_BARD CLS_SKILL_SPLDNC CLS_BFEAT_SPLDNC 4 **** **** 1 0 12 16 14 8 14 12 INT 0X00 0X0 0 CLASS_TYPE_SPELLDANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPLDNC 5 0 1 0 5 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
104 KnightoftheWeave 16790591 16835149 16835150 16835151 16835152 IR_MAGEKILL 8 CLS_ATK_2 CLS_FEAT_KNGTWV CLS_SAVTHR_DRU CLS_SKILL_KNGTWV CLS_BFEAT_KNGTWV 2 CLS_SPGN_KNGTWV CLS_SPKN_KNGTWV 0 1 12 16 14 8 14 12 INT 0X10 0X2 0 CLASS_TYPE_KNIGHT_WEAVE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KNGTWV 40 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** KnightWeave **** **** **** **** **** 104 KnightoftheWeave 16790591 16835149 16835150 16835151 16835152 IR_MAGEKILL 8 CLS_ATK_2 CLS_FEAT_KNGTWV CLS_SAVTHR_DRU CLS_SKILL_KNGTWV CLS_BFEAT_KNGTWV 2 CLS_SPGN_KNGTWV CLS_SPKN_KNGTWV 0 1 12 16 14 8 14 12 INT 0X10 0X2 0 CLASS_TYPE_KNIGHT_WEAVE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KNGTWV 40 0 0 0 10 10 0 **** **** **** **** **** **** **** **** **** KnightWeave **** **** **** **** ****
@@ -113,7 +113,7 @@
109 Umbral_Disciple 16790596 16837827 16837828 16837829 16837830 IR_ASASIN 6 CLS_ATK_2 CLS_FEAT_UMBRAL CLS_SAVTHR_BARD CLS_SKILL_UMBRAL CLS_BFEAT_UMBRAL 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_UMBRAL_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UMBRAL 40 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 109 Umbral_Disciple 16790596 16837827 16837828 16837829 16837830 IR_ASASIN 6 CLS_ATK_2 CLS_FEAT_UMBRAL CLS_SAVTHR_BARD CLS_SKILL_UMBRAL CLS_BFEAT_UMBRAL 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_UMBRAL_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UMBRAL 40 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
110 Alienist 16790597 16789710 16789711 16789712 16789713 IR_ALIEN 4 CLS_ATK_3 CLS_FEAT_ALIEN CLS_SAVTHR_WIZ CLS_SKILL_ALIEN CLS_BFEAT_ALIEN 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ALIENIST 1 1 1 2 2 4 6 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ALIEN 40 0 1 0 10 10 0 cls_stat_alien **** **** **** **** **** **** **** **** **** **** **** **** **** **** 110 Alienist 16790597 16789710 16789711 16789712 16789713 IR_ALIEN 4 CLS_ATK_3 CLS_FEAT_ALIEN CLS_SAVTHR_WIZ CLS_SKILL_ALIEN CLS_BFEAT_ALIEN 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ALIENIST 1 1 1 2 2 4 6 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ALIEN 40 0 1 0 10 10 0 cls_stat_alien **** **** **** **** **** **** **** **** **** **** **** **** **** ****
111 BlackBloodCultist 16790598 16823068 16823077 16823078 16823079 IR_WILDWOLF 12 CLS_ATK_2 CLS_FEAT_BBC CLS_SAVTHR_BARB CLS_SKILL_BBC CLS_BFEAT_BBC 4 **** **** 0 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_BLACK_BLOOD_CULTIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BBC 40 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 111 BlackBloodCultist 16790598 16823068 16823077 16823078 16823079 IR_WILDWOLF 12 CLS_ATK_2 CLS_FEAT_BBC CLS_SAVTHR_BARB CLS_SKILL_BBC CLS_BFEAT_BBC 4 **** **** 0 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_BLACK_BLOOD_CULTIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BBC 40 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
112 Warlock 16790599 16827934 16827935 16827936 16827937 IR_WARLOCK 6 CLS_ATK_2 CLS_FEAT_WARLOK CLS_SAVTHR_WIZ CLS_SKILL_WARLOK CLS_BFEAT_WARLOK 2 **** **** 1 0 12 14 14 10 12 15 CHA 0X14 0X3 1 CLASS_TYPE_WARLOCK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARLOK 0 1 0 0 -1 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 112 Warlock 16790599 16827934 16827935 16827936 16827937 IR_WARLOCK 6 CLS_ATK_2 CLS_FEAT_WARLOK CLS_SAVTHR_WIZ CLS_SKILL_WARLOK CLS_BFEAT_WARLOK 2 **** **** 1 1 12 14 14 10 12 15 CHA 0X14 0X3 1 CLASS_TYPE_WARLOCK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARLOK 0 1 0 0 -1 900 0 **** **** **** **** **** **** **** **** **** Warlock **** **** **** **** ****
113 Fochlucan_Lyrist 16852476 16825142 16825143 16825144 16825145 IR_DRUID 6 CLS_ATK_1 CLS_FEAT_FOCLYR CLS_SAVTHR_BARD CLS_SKILL_FOCLYR CLS_BFEAT_FOCLYR 6 **** **** 1 0 10 12 12 14 12 16 CHA 0X02 0X0 0 CLASS_TYPE_FOCHLUCAN_LYRIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FOCLYR 40 0 1 1 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 113 Fochlucan_Lyrist 16852476 16825142 16825143 16825144 16825145 IR_DRUID 6 CLS_ATK_1 CLS_FEAT_FOCLYR CLS_SAVTHR_BARD CLS_SKILL_FOCLYR CLS_BFEAT_FOCLYR 6 **** **** 1 0 10 12 12 14 12 16 CHA 0X02 0X0 0 CLASS_TYPE_FOCHLUCAN_LYRIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FOCLYR 40 0 1 1 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
114 Dragonsong_Lyrist 16790600 16825459 16825460 16825461 16825462 IR_DRSLYR 6 CLS_ATK_2 CLS_FEAT_DRSLYR CLS_SAVTHR_BARD CLS_SKILL_DRSLYR CLS_BFEAT_DRSLYR 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X10 0X2 0 CLASS_TYPE_DRAGONSONG_LYRIST 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_DSLYR 5 0 2 0 5 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 114 Dragonsong_Lyrist 16790600 16825459 16825460 16825461 16825462 IR_DRSLYR 6 CLS_ATK_2 CLS_FEAT_DRSLYR CLS_SAVTHR_BARD CLS_SKILL_DRSLYR CLS_BFEAT_DRSLYR 4 **** **** 1 0 12 14 14 10 12 15 CHA 0X10 0X2 0 CLASS_TYPE_DRAGONSONG_LYRIST 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_DSLYR 5 0 2 0 5 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
115 SpinemeldWarrior 16790601 16836998 16836999 16837000 16837001 IR_TEMPEST 10 CLS_ATK_1 CLS_FEAT_SPNMLD CLS_SAVTHR_FIGHT CLS_SKILL_SPNMLD CLS_BFEAT_SPNMLD 4 **** **** 1 0 16 14 14 14 10 8 STR 0X02 0X1 1 CLASS_TYPE_SPINEMELD_WARRIOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPNMLD 40 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 115 SpinemeldWarrior 16790601 16836998 16836999 16837000 16837001 IR_TEMPEST 10 CLS_ATK_1 CLS_FEAT_SPNMLD CLS_SAVTHR_FIGHT CLS_SKILL_SPNMLD CLS_BFEAT_SPNMLD 4 **** **** 1 0 16 14 14 14 10 8 STR 0X02 0X1 1 CLASS_TYPE_SPINEMELD_WARRIOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SPNMLD 40 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -129,23 +129,23 @@
125 Soulcaster 16790611 16837012 16837013 16837014 16837015 IR_MYSTIC 4 CLS_ATK_3 CLS_FEAT_SOULC CLS_SAVTHR_WIZ CLS_SKILL_SOULC CLS_BFEAT_SOULC 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_SOULCASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULC 40 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 125 Soulcaster 16790611 16837012 16837013 16837014 16837015 IR_MYSTIC 4 CLS_ATK_3 CLS_FEAT_SOULC CLS_SAVTHR_WIZ CLS_SKILL_SOULC CLS_BFEAT_SOULC 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_SOULCASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULC 40 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
126 Sacred_Fist 16790612 16825367 16825368 16825369 16825370 IR_SACREDFIST 8 CLS_ATK_1 CLS_FEAT_SACFIS CLS_SAVTHR_WILD CLS_SKILL_SACFIS CLS_BFEAT_SACFIS 4 **** **** 1 0 14 14 12 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_SACREDFIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SACFIS 40 0 0 1 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 126 Sacred_Fist 16790612 16825367 16825368 16825369 16825370 IR_SACREDFIST 8 CLS_ATK_1 CLS_FEAT_SACFIS CLS_SAVTHR_WILD CLS_SKILL_SACFIS CLS_BFEAT_SACFIS 4 **** **** 1 0 14 14 12 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_SACREDFIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SACFIS 40 0 0 1 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
127 Legendary_Dreadnought 16790613 16826086 16826087 16826088 16826089 IC_LEGDREAD 12 CLS_ATK_1 CLS_FEAT_LGDR CLS_SAVTHR_FIGHT CLS_SKILL_LGDR CLS_BFEAT_LGDR 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_LEGENDARY_DREADNOUGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LGDR 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 127 Legendary_Dreadnought 16790613 16826086 16826087 16826088 16826089 IC_LEGDREAD 12 CLS_ATK_1 CLS_FEAT_LGDR CLS_SAVTHR_FIGHT CLS_SKILL_LGDR CLS_BFEAT_LGDR 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_LEGENDARY_DREADNOUGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LGDR 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
128 Disciple_of_Baalzebul 16790614 16826094 16826095 16826096 16826097 IC_BAALZEBUL 6 CLS_ATK_2 CLS_FEAT_BAAL CLS_SAVTHR_BARD CLS_SKILL_BAAL CLS_BFEAT_BAAL 6 **** **** 1 0 12 14 14 10 12 15 CHA 0X09 0X2 0 CLASS_TYPE_DISC_BAALZEBUL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BAAL 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 128 Disciple_of_Baalzebul 16790614 16826094 16826095 16826096 16826097 IC_BAALZEBUL 6 CLS_ATK_2 CLS_FEAT_BAAL CLS_SAVTHR_BARD CLS_SKILL_BAAL CLS_BFEAT_BAAL 6 **** **** 1 0 12 14 14 10 12 15 CHA 0X09 0X2 0 CLASS_TYPE_DISC_BAALZEBUL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BAAL 40 0 0 0 10 4 0 cls_stat_baal **** **** **** **** **** **** **** **** **** **** **** **** **** ****
129 Mighty_Contender_of_Kord 16790615 16824935 16824936 16824937 16824938 IC_LEGDREAD 10 CLS_ATK_2 CLS_FEAT_KORD CLS_SAVTHR_CLER CLS_SKILL_KORD CLS_BFEAT_KORD 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_MIGHTY_CONTENDER_KORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KORD 40 0 0 1 10 4 0 cls_stat_kord **** **** **** **** **** **** **** **** **** **** **** **** **** **** 129 Mighty_Contender_of_Kord 16790615 16824935 16824936 16824937 16824938 IC_LEGDREAD 10 CLS_ATK_2 CLS_FEAT_KORD CLS_SAVTHR_CLER CLS_SKILL_KORD CLS_BFEAT_KORD 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_MIGHTY_CONTENDER_KORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KORD 40 0 0 1 10 4 0 cls_stat_kord **** **** **** **** **** **** **** **** **** **** **** **** **** ****
130 Iaijutsu_Master 16790616 16826114 16826115 16826116 16826117 IC_IAIJUTSU 10 CLS_ATK_1 CLS_FEAT_IAIJ CLS_SAVTHR_ROG CLS_SKILL_IAIJ CLS_BFEAT_IAIJ 4 **** **** 1 0 16 13 16 10 10 9 CHA 0X05 0X1 0 CLASS_TYPE_IAIJUTSU_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IAIJ 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 130 Iaijutsu_Master 16790616 16826114 16826115 16826116 16826117 IC_IAIJUTSU 10 CLS_ATK_1 CLS_FEAT_IAIJ CLS_SAVTHR_ROG CLS_SKILL_IAIJ CLS_BFEAT_IAIJ 4 **** **** 1 0 16 13 16 10 10 9 CHA 0X05 0X1 0 CLASS_TYPE_IAIJUTSU_MASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IAIJ 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
131 Disciple_of_Dispater 16790617 16826136 16826137 16826138 16826139 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_DISP CLS_SAVTHR_MONK CLS_SKILL_DISP CLS_BFEAT_DISP 4 **** **** 1 0 16 13 16 10 10 9 CON 0X09 0X2 0 CLASS_TYPE_DISPATER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DISP 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 131 Disciple_of_Dispater 16790617 16826136 16826137 16826138 16826139 IR_BLKGRD 10 CLS_ATK_1 CLS_FEAT_DISP CLS_SAVTHR_MONK CLS_SKILL_DISP CLS_BFEAT_DISP 4 **** **** 1 0 16 13 16 10 10 9 CON 0X09 0X2 0 CLASS_TYPE_DISPATER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DISP 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
132 CW_Samurai 16790618 16826168 16826169 16826170 16826171 IR_SAMURAI 10 CLS_ATK_1 CLS_FEAT_CWSM CLS_SAVTHR_FIGHT CLS_SKILL_SAMUR CLS_BFEAT_CWSM 2 **** **** 0 0 16 13 16 10 10 9 STR 0X05 0X1 0 CLASS_TYPE_CW_SAMURAI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CWSM 20 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 132 CW_Samurai 16790618 16826168 16826169 16826170 16826171 IR_SAMURAI 10 CLS_ATK_1 CLS_FEAT_CWSM CLS_SAVTHR_FIGHT CLS_SKILL_SAMUR CLS_BFEAT_CWSM 2 **** **** 0 0 16 13 16 10 10 9 STR 0X05 0X1 0 CLASS_TYPE_CW_SAMURAI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CWSM 20 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
133 Ravager 16790619 16826156 16826157 16826158 16826159 IC_RAVA 10 CLS_ATK_1 CLS_FEAT_RAVA CLS_SAVTHR_FIGHT CLS_SKILL_RAVA CLS_BFEAT_RAVA 2 **** **** 1 0 16 13 16 10 10 9 STR 0X0A 0X3 0 CLASS_TYPE_RAVAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RAVA 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 133 Ravager 16790619 16826156 16826157 16826158 16826159 IC_RAVA 10 CLS_ATK_1 CLS_FEAT_RAVA CLS_SAVTHR_FIGHT CLS_SKILL_RAVA CLS_BFEAT_RAVA 2 **** **** 0 0 16 13 16 10 10 9 STR 0X0A 0X3 0 CLASS_TYPE_RAVAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RAVA 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
134 Runescarred_Berserker 16790620 16826187 16826188 16826189 16826190 IC_RUNE 10 CLS_ATK_1 CLS_FEAT_RUNE CLS_SAVTHR_FIGHT CLS_SKILL_RUNE CLS_BFEAT_RUNE 4 **** **** 1 0 16 13 16 10 10 9 STR 0X02 0X1 0 CLASS_TYPE_RUNESCARRED 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RUNE 40 0 0 0 10 4 0 cls_stat_rune **** **** **** **** **** **** **** **** **** **** **** **** **** **** 134 Runescarred_Berserker 16790620 16826187 16826188 16826189 16826190 IC_RUNE 10 CLS_ATK_1 CLS_FEAT_RUNE CLS_SAVTHR_FIGHT CLS_SKILL_RUNE CLS_BFEAT_RUNE 4 **** **** 0 0 16 13 16 10 10 9 STR 0X02 0X1 0 CLASS_TYPE_RUNESCARRED 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RUNE 40 0 0 0 10 4 0 cls_stat_rune **** **** **** **** **** **** **** **** **** **** **** **** **** ****
135 Talontar_Blightlord 16790621 16824917 16824918 16824919 16824920 IR_CLERIC 8 CLS_ATK_2 CLS_FEAT_BLTL CLS_SAVTHR_CLER CLS_SKILL_BLTL CLS_BFEAT_BLTL 2 **** **** 0 0 16 13 16 10 10 9 WIS 0X09 0X2 0 CLASS_TYPE_BLIGHTLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLTL 40 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 135 Talontar_Blightlord 16790621 16824917 16824918 16824919 16824920 IR_CLERIC 8 CLS_ATK_2 CLS_FEAT_BLTL CLS_SAVTHR_CLER CLS_SKILL_BLTL CLS_BFEAT_BLTL 2 **** **** 0 0 16 13 16 10 10 9 WIS 0X09 0X2 0 CLASS_TYPE_BLIGHTLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BLTL 40 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
136 Shadowcaster 16790622 16847394 16847395 16847396 16847397 IR_SHADADEPT 6 CLS_ATK_3 CLS_FEAT_SHDCST CLS_SAVTHR_CLER CLS_SKILL_SHDCST CLS_BFEAT_SHDCST 2 **** **** 1 0 10 10 14 12 16 14 CHA 0x00 0x0 0 CLASS_TYPE_SHADOWCASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDCST 20 1 0 0 -1 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 136 Shadowcaster 16790622 16847394 16847395 16847396 16847397 IR_SHADADEPT 6 CLS_ATK_3 CLS_FEAT_SHDCST CLS_SAVTHR_CLER CLS_SKILL_SHDCST CLS_BFEAT_SHDCST 2 **** **** 1 0 10 10 14 12 16 14 CHA 0x00 0x0 0 CLASS_TYPE_SHADOWCASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDCST 20 1 0 0 -1 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
137 ChildOfNight 16790623 16847398 16847399 16847400 16847401 IR_X1_SHADOW 6 CLS_ATK_3 CLS_FEAT_CHLDNT CLS_SAVTHR_WIZ CLS_SKILL_CHLDNT CLS_BFEAT_CHLDNT 2 **** **** 1 0 10 10 14 12 16 14 CHA 0x00 0x0 0 CLASS_TYPE_CHILD_OF_NIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CHLDNT 40 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 137 ChildOfNight 16790623 16847398 16847399 16847400 16847401 IR_X1_SHADOW 6 CLS_ATK_3 CLS_FEAT_CHLDNT CLS_SAVTHR_WIZ CLS_SKILL_CHLDNT CLS_BFEAT_CHLDNT 2 **** **** 1 0 10 10 14 12 16 14 CHA 0x00 0x0 0 CLASS_TYPE_CHILD_OF_NIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CHLDNT 40 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
138 MasterofShadow 16790624 16847402 16847403 16847404 16847405 IR_MYSTIC 8 CLS_ATK_3 CLS_FEAT_MSTRSH CLS_SAVTHR_CLER CLS_SKILL_MSTRSH CLS_BFEAT_MSTRSH 2 **** **** 1 0 12 14 14 10 12 15 CHA 0x00 0x0 0 CLASS_TYPE_MASTER_OF_SHADOW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MSTRSH 40 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 138 MasterofShadow 16790624 16847402 16847403 16847404 16847405 IR_MYSTIC 8 CLS_ATK_3 CLS_FEAT_MSTRSH CLS_SAVTHR_CLER CLS_SKILL_MSTRSH CLS_BFEAT_MSTRSH 2 **** **** 1 0 12 14 14 10 12 15 CHA 0x00 0x0 0 CLASS_TYPE_MASTER_OF_SHADOW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MSTRSH 40 0 0 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
139 Noctumancer 16790625 16847406 16847407 16847408 16847409 IR_NOCTM 4 CLS_ATK_3 CLS_FEAT_NOCTM CLS_SAVTHR_CLER CLS_SKILL_NOCTM CLS_BFEAT_NOCTM 2 **** **** 1 0 12 14 14 10 12 15 CHA 0x00 0x0 **** CLASS_TYPE_NOCTUMANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NOCTM 40 0 1 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 139 Noctumancer 16790625 16847406 16847407 16847408 16847409 IR_NOCTM 4 CLS_ATK_3 CLS_FEAT_NOCTM CLS_SAVTHR_CLER CLS_SKILL_NOCTM CLS_BFEAT_NOCTM 2 **** **** 1 0 12 14 14 10 12 15 CHA 0x00 0x0 **** CLASS_TYPE_NOCTUMANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NOCTM 40 0 1 0 10 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
140 Totem_Rager 16790626 16825977 16825978 16825979 16825980 IR_PSYWARRIOR 10 CLS_ATK_2 CLS_FEAT_TOTRAG CLS_SAVTHR_RANG CLS_SKILL_TOTRAG CLS_BFEAT_TOTRAG 4 **** **** 1 0 16 15 14 10 10 10 CON 0X00 0X0 0 CLASS_TYPE_TOTEM_RAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOTRAG 40 0 0 0 10 142 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 140 Totem_Rager 16790626 16825977 16825978 16825979 16825980 IR_PSYWARRIOR 10 CLS_ATK_2 CLS_FEAT_TOTRAG CLS_SAVTHR_RANG CLS_SKILL_TOTRAG CLS_BFEAT_TOTRAG 4 **** **** 1 0 16 15 14 10 10 10 CON 0X00 0X0 0 CLASS_TYPE_TOTEM_RAGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOTRAG 40 0 0 0 10 142 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
141 Ninja_CA 16790627 16832316 16832317 16832318 16832319 IR_NINJCA 6 CLS_ATK_2 CLS_FEAT_NINJCA CLS_SAVTHR_ROG CLS_SKILL_NINJCA CLS_BFEAT_NINJCA 6 **** **** 0 0 12 16 12 14 14 8 DEX 0X00 0X0 0 CLASS_TYPE_NINJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NINJCA 40 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 141 Ninja_CA 16790627 16832316 16832317 16832318 16832319 IR_NINJCA 6 CLS_ATK_2 CLS_FEAT_NINJCA CLS_SAVTHR_ROG CLS_SKILL_NINJCA CLS_BFEAT_NINJCA 6 **** **** 0 0 12 16 12 14 14 8 DEX 0X00 0X0 0 CLASS_TYPE_NINJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NINJCA 0 1 0 0 -1 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
142 Shadowblade 16790628 16847410 16847411 16847412 16847413 IR_SHADOWBLADE 8 CLS_ATK_2 CLS_FEAT_SHDBLD CLS_SAVTHR_FIGHT CLS_SKILL_SHDBLD CLS_BFEAT_SHDBLD 2 **** **** 1 0 14 15 14 12 12 10 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDBLD 40 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 142 Shadowblade 16790628 16847410 16847411 16847412 16847413 IR_SHADOWBLADE 8 CLS_ATK_2 CLS_FEAT_SHDBLD CLS_SAVTHR_FIGHT CLS_SKILL_SHDBLD CLS_BFEAT_SHDBLD 2 **** **** 1 0 14 15 14 12 12 10 DEX 0X00 0X0 0 CLASS_TYPE_SHADOWBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHDBLD 40 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
143 DragonShaman 16790629 16832703 16832704 16832705 16832706 IR_DRAGSHMN 10 CLS_ATK_2 CLS_FEAT_DRGSHM CLS_SAVTHR_CLER CLS_SKILL_DRGSHM CLS_BFEAT_DRGSHM 2 **** **** 1 0 12 14 16 10 14 10 CON 0X00 0X0 0 CLASS_TYPE_DRAGON_SHAMAN 1 1 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_DRGSHM 40 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 143 DragonShaman 16790629 16832703 16832704 16832705 16832706 IR_DRAGSHMN 10 CLS_ATK_2 CLS_FEAT_DRGSHM CLS_SAVTHR_CLER CLS_SKILL_DRGSHM CLS_BFEAT_DRGSHM 2 **** **** 1 0 12 14 16 10 14 10 CON 0X00 0X0 0 CLASS_TYPE_DRAGON_SHAMAN 1 1 3 4 5 6 7 8 9 10 11 12 12 14 15 16 17 18 19 20 CLS_PRES_DRGSHM 40 1 0 0 -1 705 0 cls_stat_drgshm **** **** **** **** **** **** **** **** **** **** **** **** **** ****
144 Dragonfire_Adept 16790630 16832914 16832915 16832916 16832917 IR_DRGNFIREADPT 8 CLS_ATK_3 CLS_FEAT_DFA CLS_SAVTHR_CLER CLS_SKILL_DFA CLS_BFEAT_DFA 4 **** **** 1 0 10 14 16 12 10 14 CON 0X00 0X0 0 CLASS_TYPE_DRAGONFIRE_ADEPT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DFA 40 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 144 Dragonfire_Adept 16790630 16832914 16832915 16832916 16832917 IR_DRGNFIREADPT 8 CLS_ATK_3 CLS_FEAT_DFA CLS_SAVTHR_CLER CLS_SKILL_DFA CLS_BFEAT_DFA 4 **** **** 1 1 10 14 16 12 10 14 CON 0X00 0X0 0 CLASS_TYPE_DRAGONFIRE_ADEPT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DFA 40 1 0 0 -1 1 0 **** **** **** **** **** **** **** **** **** Dragonfire **** **** **** **** ****
145 Psion 16790631 16823566 16823567 16823568 16823569 IR_PSION 4 CLS_ATK_3 CLS_FEAT_PSION CLS_SAVTHR_WIZ CLS_SKILL_PSION CLS_BFEAT_PSION 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_PSION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSION 0 1 0 0 -1 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 145 Psion 16790631 16823566 16823567 16823568 16823569 IR_PSION 4 CLS_ATK_3 CLS_FEAT_PSION CLS_SAVTHR_WIZ CLS_SKILL_PSION CLS_BFEAT_PSION 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_PSION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSION 0 1 0 0 -1 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
146 Psychic_Warrior 16790632 16823570 16823571 16823572 16823573 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_PSYWAR CLS_SAVTHR_FIGHT CLS_SKILL_PSYWAR CLS_BFEAT_PSYWAR 2 **** **** 1 0 14 12 14 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_PSYWAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYWAR 0 1 0 0 -1 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 146 Psychic_Warrior 16790632 16823570 16823571 16823572 16823573 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_PSYWAR CLS_SAVTHR_FIGHT CLS_SKILL_PSYWAR CLS_BFEAT_PSYWAR 2 **** **** 1 0 14 12 14 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_PSYWAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYWAR 0 1 0 0 -1 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
147 Soulknife 16790633 16823574 16823575 16823576 16823577 IR_SOULKNIFE 10 CLS_ATK_2 CLS_FEAT_SOULKN CLS_SAVTHR_BARD CLS_SKILL_SOULKN CLS_BFEAT_SOULKN 4 **** **** 1 0 16 15 14 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SOULKNIFE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULKN 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 147 Soulknife 16790633 16823574 16823575 16823576 16823577 IR_SOULKNIFE 10 CLS_ATK_2 CLS_FEAT_SOULKN CLS_SAVTHR_BARD CLS_SKILL_SOULKN CLS_BFEAT_SOULKN 4 **** **** 1 0 16 15 14 10 10 10 STR 0X00 0X0 0 CLASS_TYPE_SOULKNIFE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOULKN 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -181,14 +181,14 @@
177 Frenzied_Berserker 16790662 16824216 16824217 16824218 16824219 IR_FREBZK 12 CLS_ATK_1 CLS_FEAT_FREBZK CLS_SAVTHR_BARB CLS_SKILL_FREBZK CLS_BFEAT_FREBZK 2 **** **** 1 0 16 14 14 14 10 8 STR 0X02 0X1 0 CLASS_TYPE_FRE_BERSERKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FREBZK 40 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 177 Frenzied_Berserker 16790662 16824216 16824217 16824218 16824219 IR_FREBZK 12 CLS_ATK_1 CLS_FEAT_FREBZK CLS_SAVTHR_BARB CLS_SKILL_FREBZK CLS_BFEAT_FREBZK 2 **** **** 1 0 16 14 14 14 10 8 STR 0X02 0X1 0 CLASS_TYPE_FRE_BERSERKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FREBZK 40 0 0 0 10 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
178 Tempest 16790663 16824242 16824243 16824244 16824245 IR_TEMPEST 10 CLS_ATK_1 CLS_FEAT_TEMPST CLS_SAVTHR_BARB CLS_SKILL_TEMPST CLS_BFEAT_TEMPST 2 **** **** 1 0 10 16 12 10 16 10 DEX 0X00 0X0 0 CLASS_TYPE_TEMPEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TEMPST 40 0 0 0 10 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 178 Tempest 16790663 16824242 16824243 16824244 16824245 IR_TEMPEST 10 CLS_ATK_1 CLS_FEAT_TEMPST CLS_SAVTHR_BARB CLS_SKILL_TEMPST CLS_BFEAT_TEMPST 2 **** **** 1 0 10 16 12 10 16 10 DEX 0X00 0X0 0 CLASS_TYPE_TEMPEST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TEMPST 40 0 0 0 10 7 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
179 Foe_Hunter 16790664 16824256 16824257 16824258 16824259 IR_FH 10 CLS_ATK_1 CLS_FEAT_FH CLS_SAVTHR_WILD CLS_SKILL_FH CLS_BFEAT_FH 2 **** **** 1 0 10 16 12 10 16 10 DEX 0X00 0X0 0 CLASS_TYPE_FOE_HUNTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FH 40 0 0 0 10 58 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 179 Foe_Hunter 16790664 16824256 16824257 16824258 16824259 IR_FH 10 CLS_ATK_1 CLS_FEAT_FH CLS_SAVTHR_WILD CLS_SKILL_FH CLS_BFEAT_FH 2 **** **** 1 0 10 16 12 10 16 10 DEX 0X00 0X0 0 CLASS_TYPE_FOE_HUNTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FH 40 0 0 0 10 58 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
180 ***Eye_of_Gruumsh*** 16790665 16824294 16824295 16824296 16824297 IR_GRUUMSH 12 CLS_ATK_1 CLS_FEAT_EOG CLS_SAVTHR_BARB CLS_SKILL_EOG CLS_BFEAT_EOG 2 **** **** 0 0 16 14 14 14 10 8 STR 0X0A 0X3 0 CLASS_TYPE_PRC_EYE_OF_GRUUMSH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EOG 40 0 0 0 10 17 0 cls_stat_eog **** **** **** **** **** **** **** **** **** **** **** **** **** **** 180 Verdant_Lord 16855246 16855247 16855248 16855249 16855250 IR_DRUID 8 CLS_ATK_1 CLS_FEAT_VLORD CLS_SAVTHR_DRU CLS_SKILL_VLORD CLS_BFEAT_VLORD 4 **** **** 1 0 14 13 13 16 10 10 WIS 0X10 0X2 0 CLASS_VERDANT_LORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_VLORD 40 0 0 1 10 3 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
181 Orc_Warlord 16790666 16824312 16824313 16824314 16824315 IR_ORCWAR 12 CLS_ATK_1 CLS_FEAT_ORCWAR CLS_SAVTHR_MONK CLS_SKILL_ORCWAR CLS_BFEAT_ORCWAR 2 **** **** 1 0 16 14 14 14 10 8 STR 0X08 0X2 0 CLASS_TYPE_ORC_WARLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ORCWAR 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 181 Orc_Warlord 16790666 16824312 16824313 16824314 16824315 IR_ORCWAR 12 CLS_ATK_1 CLS_FEAT_ORCWAR CLS_SAVTHR_MONK CLS_SKILL_ORCWAR CLS_BFEAT_ORCWAR 2 **** **** 1 0 16 14 14 14 10 8 STR 0X08 0X2 0 CLASS_TYPE_ORC_WARLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ORCWAR 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
182 Thrall_of_Grazzt 16790667 16824516 16824517 16824518 16824519 IR_TOG 6 CLS_ATK_3 CLS_FEAT_TOG CLS_SAVTHR_WIZ CLS_SKILL_TOG CLS_BFEAT_TOG 4 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_THRALL_OF_GRAZZT_A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOG_A 40 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 182 Thrall_of_Grazzt 16790667 16824516 16824517 16824518 16824519 IR_TOG 6 CLS_ATK_3 CLS_FEAT_TOG CLS_SAVTHR_WIZ CLS_SKILL_TOG CLS_BFEAT_TOG 4 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_THRALL_OF_GRAZZT_A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_TOG_A 40 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
183 Necrocarnate 16790668 16838080 16838081 16838082 16838083 ir_truenecro 6 CLS_ATK_3 CLS_FEAT_NECRNM CLS_SAVTHR_WIZ CLS_SKILL_NECRNM CLS_BFEAT_BLANK 2 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_NECROCARNATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NECRNM 13 0 0 0 13 13 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 183 Necrocarnate 16790668 16838080 16838081 16838082 16838083 ir_truenecro 6 CLS_ATK_3 CLS_FEAT_NECRNM CLS_SAVTHR_WIZ CLS_SKILL_NECRNM CLS_BFEAT_BLANK 2 **** **** 1 0 12 16 14 8 14 12 INT 0X09 0X2 0 CLASS_TYPE_NECROCARNATE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_NECRNM 13 0 0 0 13 13 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
184 Eldritch_Disciple 16790669 16790013 16790014 16790015 16790016 IR_EDISC 8 CLS_ATK_2 CLS_FEAT_EDISC CLS_SAVTHR_CLER CLS_SKILL_EDISC CLS_BFEAT_EDISC 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_ELDRITCH_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EDISC 40 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 184 Eldritch_Disciple 16790669 16790013 16790014 16790015 16790016 IR_EDISC 8 CLS_ATK_2 CLS_FEAT_EDISC CLS_SAVTHR_CLER CLS_SKILL_EDISC CLS_BFEAT_EDISC 2 **** **** 1 0 14 8 14 16 10 14 WIS 0X00 0X0 0 CLASS_TYPE_ELDRITCH_DISCIPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_EDISC 40 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
185 Eldritch_Theurge 16790670 16790017 16790018 16790019 16790020 IR_ETHEUR 4 CLS_ATK_2 CLS_FEAT_ETHEUR CLS_SAVTHR_WIZ CLS_SKILL_ETHEUR CLS_BFEAT_ETHEUR 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ELDRITCH_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ETHEUR 40 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 185 Eldritch_Theurge 16790670 16790017 16790018 16790019 16790020 IR_ETHEUR 4 CLS_ATK_2 CLS_FEAT_ETHEUR CLS_SAVTHR_WIZ CLS_SKILL_ETHEUR CLS_BFEAT_ETHEUR 2 **** **** 1 0 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ELDRITCH_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ETHEUR 40 0 1 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
186 Ghost_Faced_Killer 16790671 16832352 16832353 16832354 16832355 IR_GFKILL_PRC 8 CLS_ATK_1 CLS_FEAT_GFKILL CLS_SAVTHR_FIGHT CLS_SKILL_GFKILL CLS_BFEAT_GFKILL 4 **** **** 1 0 16 13 16 10 10 9 STR 0X09 0X2 0 CLASS_TYPE_GHOST_FACED_KILLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_GFKILL 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 186 Ghost_Faced_Killer 16790671 16832352 16832353 16832354 16832355 IR_GFKILL_PRC 8 CLS_ATK_1 CLS_FEAT_GFKILL CLS_SAVTHR_FIGHT CLS_SKILL_GFKILL CLS_BFEAT_GFKILL 4 **** **** 1 0 16 13 16 10 10 9 STR 0X09 0X2 0 CLASS_TYPE_GHOST_FACED_KILLER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_GFKILL 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
187 DreadNecromancer 16790672 16847586 16847587 16847588 16847589 IR_PALEMA 6 CLS_ATK_3 CLS_FEAT_DNECRO CLS_SAVTHR_WIZ CLS_SKILL_DNECRO CLS_BFEAT_DNECRO 2 CLS_SPGN_DNECRO CLS_SPKN_DNECRO 1 1 10 14 12 10 14 16 CHA 0X08 0X2 0 CLASS_TYPE_DREAD_NECROMANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DNECRO 0 1 1 0 -1 10 130 **** **** **** **** **** **** **** **** **** DreadNecro **** **** **** **** **** 187 DreadNecromancer 16790672 16847586 16847587 16847588 16847589 IR_PALEMA 6 CLS_ATK_3 CLS_FEAT_DNECRO CLS_SAVTHR_WIZ CLS_SKILL_DNECRO CLS_BFEAT_DNECRO 2 CLS_SPGN_DNECRO CLS_SPKN_DNECRO 1 1 10 14 12 10 14 16 CHA 0X08 0X2 0 CLASS_TYPE_DREAD_NECROMANCER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DNECRO 0 1 0 0 -1 10 130 **** **** **** **** **** **** 1 **** **** DreadNecro **** **** **** **** ****
188 UltimateMagus **** 16790350 16790351 16790352 16790353 IR_EPICSPELL 4 CLS_ATK_3 CLS_FEAT_UM CLS_SAVTHR_WIZ CLS_SKILL_UM CLS_BFEAT_UM 2 **** **** 0 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_MYSTIC_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UM 40 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 188 UltimateMagus **** 16790350 16790351 16790352 16790353 IR_EPICSPELL 4 CLS_ATK_3 CLS_FEAT_UM CLS_SAVTHR_WIZ CLS_SKILL_UM CLS_BFEAT_UM 2 **** **** 0 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_MYSTIC_THEURGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_UM 40 0 2 0 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
189 ForestMaster 16790673 16793736 16793737 16793738 16793739 IR_DRUID 8 CLS_ATK_2 CLS_FEAT_FORMAS CLS_SAVTHR_DRU CLS_SKILL_FORMAS CLS_BFEAT_FORMAS 2 **** **** 0 0 14 13 13 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_FORESTMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FORMAS 40 0 0 1 10 3 0 cls_stat_formas **** **** **** **** **** **** **** **** **** **** **** **** **** **** 189 ForestMaster 16790673 16793736 16793737 16793738 16793739 IR_DRUID 8 CLS_ATK_2 CLS_FEAT_FORMAS CLS_SAVTHR_DRU CLS_SKILL_FORMAS CLS_BFEAT_FORMAS 2 **** **** 0 0 14 13 13 16 10 10 WIS 0X00 0X0 0 CLASS_TYPE_FORESTMASTER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_FORMAS 40 0 0 1 10 3 0 cls_stat_formas **** **** **** **** **** **** **** **** **** **** **** **** **** ****
190 Archivist 16790674 16789866 16789867 16789868 16789869 IR_ARCHIVIST 6 CLS_ATK_3 CLS_FEAT_ARCHV CLS_SAVTHR_CLER CLS_SKILL_ARCHV CLS_BFEAT_ARCHV 4 CLS_SPGN_ARCHV **** 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ARCHIVIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCHV 0 1 0 0 -1 10 65 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 190 Archivist 16790674 16789866 16789867 16789868 16789869 IR_ARCHIVIST 6 CLS_ATK_3 CLS_FEAT_ARCHV CLS_SAVTHR_CLER CLS_SKILL_ARCHV CLS_BFEAT_ARCHV 4 CLS_SPGN_ARCHV **** 1 1 10 14 14 12 16 10 INT 0X00 0X0 0 CLASS_TYPE_ARCHIVIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ARCHV 0 1 0 0 -1 10 65 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -198,9 +198,9 @@
194 RubyKnightVindicator 16790678 16827167 16827168 16827169 16827170 IR_HEIRONEOUS 8 CLS_ATK_1 CLS_FEAT_RBYKNT CLS_SAVTHR_WIZ CLS_SKILL_RBYKNT CLS_BFEAT_RBYKNT 4 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_RUBY_VINDICATOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RBYKNT 40 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 194 RubyKnightVindicator 16790678 16827167 16827168 16827169 16827170 IR_HEIRONEOUS 8 CLS_ATK_1 CLS_FEAT_RBYKNT CLS_SAVTHR_WIZ CLS_SKILL_RBYKNT CLS_BFEAT_RBYKNT 4 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_RUBY_VINDICATOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_RBYKNT 40 0 0 1 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
195 MasterOfNine 16790679 16847557 16847558 16847559 16847560 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_MONINE CLS_SAVTHR_WIZ CLS_SKILL_MONINE CLS_BFEAT_MONINE 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_MASTER_OF_NINE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MONINE 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 195 MasterOfNine 16790679 16847557 16847558 16847559 16847560 IR_PSYWARRIOR 8 CLS_ATK_2 CLS_FEAT_MONINE CLS_SAVTHR_WIZ CLS_SKILL_MONINE CLS_BFEAT_MONINE 6 **** **** 1 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_MASTER_OF_NINE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MONINE 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
196 EternalBlade 16790680 16834750 16834751 16834752 16834753 IR_FH 10 CLS_ATK_1 CLS_FEAT_ETBL CLS_SAVTHR_FIGHT CLS_SKILL_ETBL CLS_BFEAT_ETBL 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_ETERNAL_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ETBL 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 196 EternalBlade 16790680 16834750 16834751 16834752 16834753 IR_FH 10 CLS_ATK_1 CLS_FEAT_ETBL CLS_SAVTHR_FIGHT CLS_SKILL_ETBL CLS_BFEAT_ETBL 2 **** **** 1 0 16 13 16 10 10 9 STR 0X00 0X0 0 CLASS_TYPE_ETERNAL_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ETBL 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
197 ShadowSunNinja 16790681 16834778 16834779 16834780 16834781 IR_SHADADEPT 8 CLS_ATK_2 CLS_FEAT_SSN CLS_SAVTHR_MONK CLS_SKILL_SSN CLS_BFEAT_SSN 4 **** **** 0 0 16 13 16 10 10 9 STR 0X11 0X2 0 CLASS_TYPE_SHADOW_SUN_NINJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SSN 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 197 ShadowSunNinja 16790681 16834778 16834779 16834780 16834781 IR_SHADADEPT 8 CLS_ATK_2 CLS_FEAT_SSN CLS_SAVTHR_MONK CLS_SKILL_SSN CLS_BFEAT_SSN 4 **** **** 1 0 16 13 16 10 10 9 STR 0X11 0X2 0 CLASS_TYPE_SHADOW_SUN_NINJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SSN 40 0 0 0 10 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
198 WitchbornBinder 16790682 16838144 16838145 16838146 16838147 IR_WITCH 6 CLS_ATK_2 CLS_FEAT_WCHBRN CLS_SAVTHR_WIZ CLS_SKILL_WCHBRN CLS_BFEAT_WCHBRN 4 **** **** 1 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_WITCHBORN_BINDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WCHBRN 40 0 0 0 10 6 2 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 198 WitchbornBinder 16790682 16838144 16838145 16838146 16838147 IR_WITCH 6 CLS_ATK_2 CLS_FEAT_WCHBRN CLS_SAVTHR_WIZ CLS_SKILL_WCHBRN CLS_BFEAT_WCHBRN 4 **** **** 1 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_WITCHBORN_BINDER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WCHBRN 40 0 0 0 10 6 2 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
199 Baelnorn 16790683 16829216 16829217 16829218 16829219 IR_BAELNORN 4 CLS_ATK_4 CLS_FEAT_BAELN CLS_SAVTHR_LICH CLS_SKILL_WIZ CLS_BFEAT_LICH 2 **** **** 1 0 13 13 13 13 13 13 CHA 0X11 0X2 0 CLASS_TYPE_BAELNORN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BAELN 4 0 0 0 4 10 0 cls_stat_baeln **** **** **** **** **** **** **** **** **** **** **** **** **** **** 199 Lion_of_Talisid 16855216 16855217 16855218 16855219 16855220 IR_LIONTALISID 8 CLS_ATK_2 CLS_FEAT_LOT CLS_SAVTHR_DRU CLS_SKILL_LOT CLS_BFEAT_LOT 4 **** **** 1 0 14 13 13 16 10 10 WIS 0X16 0X3 0 CLASS_TYPE_LION_OF_TALISID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_LOT 40 0 0 1 10 3 0 **** **** **** **** **** **** **** **** **** **** **** **** 1 **** ****
200 Disciple_of_Meph 16790684 16823016 16823017 16823018 16823019 IR_DISCMEPH 8 CLS_ATK_1 CLS_FEAT_MEPH CLS_SAVTHR_MONK CLS_SKILL_MEPH CLS_BFEAT_MEPH 4 **** **** 1 0 12 16 14 8 14 12 CHA 0X09 0X2 0 CLASS_TYPE_DISCIPLE_OF_MEPH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MEPH 40 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 200 Disciple_of_Meph 16790684 16823016 16823017 16823018 16823019 IR_DISCMEPH 8 CLS_ATK_1 CLS_FEAT_MEPH CLS_SAVTHR_MONK CLS_SKILL_MEPH CLS_BFEAT_MEPH 4 **** **** 1 0 12 16 14 8 14 12 CHA 0X09 0X2 0 CLASS_TYPE_DISCIPLE_OF_MEPH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_MEPH 40 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
201 Soul_Eater 16790685 16832116 16832117 16832118 16832119 IR_SOULEATER 8 CLS_ATK_1 CLS_FEAT_SLEAT CLS_SAVTHR_MONK CLS_SKILL_SLEAT CLS_BFEAT_SLEAT 4 **** **** 1 0 14 16 10 12 14 10 INT 0X09 0X2 0 CLASS_TYPE_SOUL_EATER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SLEAT 40 0 0 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 201 Soul_Eater 16790685 16832116 16832117 16832118 16832119 IR_SOULEATER 8 CLS_ATK_1 CLS_FEAT_SLEAT CLS_SAVTHR_MONK CLS_SKILL_SLEAT CLS_BFEAT_SLEAT 4 **** **** 1 0 14 16 10 12 14 10 INT 0X09 0X2 0 CLASS_TYPE_SOUL_EATER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SLEAT 40 0 0 0 10 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
202 Henshin_Mystic 16790686 16825076 16825078 16825079 16825080 IR_HNSHN 8 CLS_ATK_2 CLS_FEAT_HNSHN CLS_SAVTHR_MONK CLS_SKILL_HNSHN CLS_BFEAT_HNSHN 4 **** **** 1 0 14 14 14 15 10 10 WIS 0X05 0X1 0 CLASS_TYPE_HENSHIN_MYSTIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HNSHN 40 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 202 Henshin_Mystic 16790686 16825076 16825078 16825079 16825080 IR_HNSHN 8 CLS_ATK_2 CLS_FEAT_HNSHN CLS_SAVTHR_MONK CLS_SKILL_HNSHN CLS_BFEAT_HNSHN 4 **** **** 1 0 14 14 14 15 10 10 WIS 0X05 0X1 0 CLASS_TYPE_HENSHIN_MYSTIC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_HNSHN 40 0 0 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -208,7 +208,7 @@
204 Enlightened_Fist 16790688 16829416 16829417 16829418 16829419 IR_SACREDFIST 8 CLS_ATK_2 CLS_FEAT_ENLFIS CLS_SAVTHR_BARD CLS_SKILL_ENLFIS CLS_BFEAT_ENLFIS 4 **** **** 1 0 10 14 12 14 16 10 DEX 0X00 0X0 0 CLASS_TYPE_ENLIGHTENEDFIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ENLFIS 40 0 1 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 204 Enlightened_Fist 16790688 16829416 16829417 16829418 16829419 IR_SACREDFIST 8 CLS_ATK_2 CLS_FEAT_ENLFIS CLS_SAVTHR_BARD CLS_SKILL_ENLFIS CLS_BFEAT_ENLFIS 4 **** **** 1 0 10 14 12 14 16 10 DEX 0X00 0X0 0 CLASS_TYPE_ENLIGHTENEDFIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ENLFIS 40 0 1 0 10 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
205 Morninglord 16790689 16789624 16789625 16789626 16789627 IR_MORNING 8 CLS_ATK_2 CLS_FEAT_ML CLS_SAVTHR_CLER CLS_SKILL_ML CLS_BFEAT_ML 2 **** **** 0 0 14 8 14 16 10 14 CHA 0X11 0X2 0 CLASS_TYPE_MORNINGLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ML 40 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 205 Morninglord 16790689 16789624 16789625 16789626 16789627 IR_MORNING 8 CLS_ATK_2 CLS_FEAT_ML CLS_SAVTHR_CLER CLS_SKILL_ML CLS_BFEAT_ML 2 **** **** 0 0 14 8 14 16 10 14 CHA 0X11 0X2 0 CLASS_TYPE_MORNINGLORD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_ML 40 0 0 1 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
206 IncarnumBlade 16790690 16838136 16838137 16838138 16838139 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_IBLADE CLS_SAVTHR_FIGHT CLS_SKILL_IBLADE CLS_BFEAT_BLANK 2 **** **** 1 0 16 14 14 14 10 8 STR 0X01 0X3 0 CLASS_TYPE_INCARNUM_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IBLADE 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 206 IncarnumBlade 16790690 16838136 16838137 16838138 16838139 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_IBLADE CLS_SAVTHR_FIGHT CLS_SKILL_IBLADE CLS_BFEAT_BLANK 2 **** **** 1 0 16 14 14 14 10 8 STR 0X01 0X3 0 CLASS_TYPE_INCARNUM_BLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IBLADE 5 0 0 0 5 17 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
207 OAShaman 16790691 16827659 16827660 16827661 16827662 IR_CLERIC 6 CLS_ATK_2 CLS_FEAT_SHAMAN CLS_SAVTHR_WIZ CLS_SKILL_SHAMAN CLS_BFEAT_SHAMAN 4 CLS_SPGN_SHAMAN **** 1 1 10 13 12 16 13 12 WIS 0X00 0X0 0 CLASS_TYPE_SHAMAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHAMAN 0 1 0 0 -1 2 0 **** 1 0 1 0 0 0 0 WIS Shaman 1 1 1 0 0 207 OAShaman 16790691 16827659 16827660 16827661 16827662 IR_CLERIC 6 CLS_ATK_2 CLS_FEAT_SHAMAN CLS_SAVTHR_WIZ CLS_SKILL_SHAMAN CLS_BFEAT_SHAMAN 4 CLS_SPGN_SHAMAN **** 0 1 10 13 12 16 13 12 WIS 0X00 0X0 0 CLASS_TYPE_SHAMAN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHAMAN 0 1 0 0 -1 2 0 **** 1 0 1 0 0 0 0 WIS Shaman 1 1 1 0 0
208 Pyrokineticist 16790692 16827043 16827044 16827045 16827046 IR_BFZ 8 CLS_ATK_2 CLS_FEAT_PYRO CLS_SAVTHR_WILD CLS_SKILL_PYRO CLS_BFEAT_PYRO 2 **** **** 1 0 10 14 14 10 12 16 CHA 0X03 0X1 0 CLASS_TYPE_PYROKINETICIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PYRO 40 0 0 0 10 9 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 208 Pyrokineticist 16790692 16827043 16827044 16827045 16827046 IR_BFZ 8 CLS_ATK_2 CLS_FEAT_PYRO CLS_SAVTHR_WILD CLS_SKILL_PYRO CLS_BFEAT_PYRO 2 **** **** 1 0 10 14 14 10 12 16 CHA 0X03 0X1 0 CLASS_TYPE_PYROKINETICIST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PYRO 40 0 0 0 10 9 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
209 Shadowmind 16790693 16829364 16829365 16829366 16829367 IR_TFSHAD 6 CLS_ATK_2 CLS_FEAT_SDMIND CLS_SAVTHR_BARD CLS_SKILL_SDMIND CLS_BFEAT_SDMIND 4 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_SHADOWMIND 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SDMIND 40 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 209 Shadowmind 16790693 16829364 16829365 16829366 16829367 IR_TFSHAD 6 CLS_ATK_2 CLS_FEAT_SDMIND CLS_SAVTHR_BARD CLS_SKILL_SDMIND CLS_BFEAT_SDMIND 4 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_SHADOWMIND 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SDMIND 40 0 0 0 10 8 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
210 Psychic_Thurge 16790694 16823908 16823909 16823910 16823911 IR_PSYCHIC 4 CLS_ATK_3 CLS_FEAT_PSYCH CLS_SAVTHR_WIZ CLS_SKILL_PSYCH CLS_BFEAT_PSYCH 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_PSYCHIC_THEURGE 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYCH 40 0 0 1 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 210 Psychic_Thurge 16790694 16823908 16823909 16823910 16823911 IR_PSYCHIC 4 CLS_ATK_3 CLS_FEAT_PSYCH CLS_SAVTHR_WIZ CLS_SKILL_PSYCH CLS_BFEAT_PSYCH 2 **** **** 1 0 10 11 11 16 16 10 INT 0X00 0X0 0 CLASS_TYPE_PSYCHIC_THEURGE 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_PSYCH 40 0 0 1 10 10 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -235,9 +235,9 @@
231 BrimstoneSpeaker 16790715 16827554 16827555 16827556 16827557 IR_BRIMSTONE 8 CLS_ATK_2 CLS_FEAT_BRIMST CLS_SAVTHR_CLER CLS_SKILL_BRIMST CLS_BFEAT_BRIMST 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X11 0X2 0 CLASS_TYPE_BRIMSTONE_SPEAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BRIMST 40 0 0 2 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 231 BrimstoneSpeaker 16790715 16827554 16827555 16827556 16827557 IR_BRIMSTONE 8 CLS_ATK_2 CLS_FEAT_BRIMST CLS_SAVTHR_CLER CLS_SKILL_BRIMST CLS_BFEAT_BRIMST 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X11 0X2 0 CLASS_TYPE_BRIMSTONE_SPEAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BRIMST 40 0 0 2 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
232 Shugenja **** 16825142 16825143 16825144 16825145 IR_HNSHN 6 CLS_ATK_3 CLS_FEAT_SHUGEN CLS_SAVTHR_WIZ CLS_SKILL_SHUGEN CLS_BFEAT_SHUGEN 4 **** **** 0 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SHUGENJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHUGEN 0 1 0 0 -1 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 232 Shugenja **** 16825142 16825143 16825144 16825145 IR_HNSHN 6 CLS_ATK_3 CLS_FEAT_SHUGEN CLS_SAVTHR_WIZ CLS_SKILL_SHUGEN CLS_BFEAT_SHUGEN 4 **** **** 0 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SHUGENJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHUGEN 0 1 0 0 -1 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
233 Sohei 16790716 16827429 16827430 16827431 16827432 IR_FIGHTER 10 CLS_ATK_2 CLS_FEAT_SOHEI CLS_SAVTHR_CLER CLS_SKILL_SOHEI CLS_BFEAT_SOHEI 2 CLS_SPGN_SOHEI **** 1 1 16 10 13 14 13 10 STR 0X05 0X1 0 CLASS_TYPE_SOHEI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOHEI 0 1 0 0 -1 6 0 **** 1 0 0 0 0 0 0 WIS Sohei 1 4 255 0 0 233 Sohei 16790716 16827429 16827430 16827431 16827432 IR_FIGHTER 10 CLS_ATK_2 CLS_FEAT_SOHEI CLS_SAVTHR_CLER CLS_SKILL_SOHEI CLS_BFEAT_SOHEI 2 CLS_SPGN_SOHEI **** 1 1 16 10 13 14 13 10 STR 0X05 0X1 0 CLASS_TYPE_SOHEI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOHEI 0 1 0 0 -1 6 0 **** 1 0 0 0 0 0 0 WIS Sohei 1 4 255 0 0
234 Crusader 16790717 16829702 16829703 16829704 16829705 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_CRUSDR CLS_SAVTHR_FIGHT CLS_SKILL_CRUSDR CLS_BFEAT_CRUSDR 4 **** **** 1 0 16 14 14 10 12 10 STR 0X1E 0X3 1 CLASS_TYPE_CRUSADER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CRUSDR 40 1 0 0 -1 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 234 Crusader 16790717 16829702 16829703 16829704 16829705 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_CRUSDR CLS_SAVTHR_FIGHT CLS_SKILL_CRUSDR CLS_BFEAT_CRUSDR 4 **** **** 1 0 16 14 14 10 12 10 STR 0X1E 0X3 1 CLASS_TYPE_CRUSADER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CRUSDR 0 1 0 0 -1 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
235 Swordsage 16790718 16829706 16829707 16829708 16829709 IR_MONK 8 CLS_ATK_2 CLS_FEAT_SWDSGE CLS_SAVTHR_BARD CLS_SKILL_SWDSGE CLS_BFEAT_SWDSGE 6 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_SWORDSAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWDSGE 40 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 235 Swordsage 16790718 16829706 16829707 16829708 16829709 IR_MONK 8 CLS_ATK_2 CLS_FEAT_SWDSGE CLS_SAVTHR_BARD CLS_SKILL_SWDSGE CLS_BFEAT_SWDSGE 6 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_SWORDSAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWDSGE 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
236 Warblade 16790719 16829710 16829711 16829712 16829713 IR_FIGHTER 12 CLS_ATK_1 CLS_FEAT_WARBLD CLS_SAVTHR_FIGHT CLS_SKILL_WARBLD CLS_BFEAT_WARBLD 4 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_WARBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARBLD 40 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 236 Warblade 16790719 16829710 16829711 16829712 16829713 IR_FIGHTER 12 CLS_ATK_1 CLS_FEAT_WARBLD CLS_SAVTHR_FIGHT CLS_SKILL_WARBLD CLS_BFEAT_WARBLD 4 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_WARBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARBLD 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
237 Warmage 16790720 16827604 16827605 16827606 16827607 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_WRMAGE CLS_SAVTHR_WIZ CLS_SKILL_WRMAGE CLS_BFEAT_WRMAGE 2 CLS_SPGN_WRMAGE CLS_SPKN_WRMAGE 1 1 10 14 12 10 14 16 INT 0X00 0X0 0 CLASS_TYPE_WARMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WRMAGE 0 1 0 0 -1 10 130 **** **** **** **** **** **** **** **** **** Warmage **** **** **** **** **** 237 Warmage 16790720 16827604 16827605 16827606 16827607 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_WRMAGE CLS_SAVTHR_WIZ CLS_SKILL_WRMAGE CLS_BFEAT_WRMAGE 2 CLS_SPGN_WRMAGE CLS_SPKN_WRMAGE 1 1 10 14 12 10 14 16 INT 0X00 0X0 0 CLASS_TYPE_WARMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WRMAGE 0 1 0 0 -1 10 130 **** **** **** **** **** **** **** **** **** Warmage **** **** **** **** ****
238 Knight 16790721 16827632 16827633 16827634 16827635 IR_PALADIN 12 CLS_ATK_1 CLS_FEAT_KNIGHT CLS_SAVTHR_WIZ CLS_SKILL_KNIGHT CLS_BFEAT_KNIGHT 2 **** **** 1 0 16 10 16 10 10 12 STR 0X05 0X1 0 CLASS_TYPE_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KNIGHT 20 1 0 0 -1 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 238 Knight 16790721 16827632 16827633 16827634 16827635 IR_PALADIN 12 CLS_ATK_1 CLS_FEAT_KNIGHT CLS_SAVTHR_WIZ CLS_SKILL_KNIGHT CLS_BFEAT_KNIGHT 2 **** **** 1 0 16 10 16 10 10 12 STR 0X05 0X1 0 CLASS_TYPE_KNIGHT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_KNIGHT 20 1 0 0 -1 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
239 FistOfDalQuor 16790722 16827033 16827034 16827035 16827036 IR_SHOUDISC 10 CLS_ATK_2 CLS_FEAT_DALQUR CLS_SAVTHR_CLER CLS_SKILL_DALQUR CLS_BFEAT_DALQUR 2 **** **** 0 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_FIST_DAL_QUOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DALQUR 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 239 FistOfDalQuor 16790722 16827033 16827034 16827035 16827036 IR_SHOUDISC 10 CLS_ATK_2 CLS_FEAT_DALQUR CLS_SAVTHR_CLER CLS_SKILL_DALQUR CLS_BFEAT_DALQUR 2 **** **** 0 0 12 16 14 8 14 12 DEX 0X00 0X0 0 CLASS_TYPE_FIST_DAL_QUOR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DALQUR 5 0 0 0 5 4 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

View File

@@ -53,7 +53,7 @@
49 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 4 30 3 1 **** **** 49 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 4 30 3 1 **** ****
50 Drider Dr 3063 3063 16833081 108146 16833083 **** 406 4 4 4 6 6 6 30 9 RACE_FEAT_DRIDER 16833082 1 RACIAL_TYPE_DRIDER 110 9 1 drow **** **** **** 4 30 3 1 INT 268 50 Drider Dr 3063 3063 16833081 108146 16833083 **** 406 4 4 4 6 6 6 30 9 RACE_FEAT_DRIDER 16833082 1 RACIAL_TYPE_DRIDER 110 9 1 drow **** **** **** 4 30 3 1 INT 268
51 Wemic Wm 16826957 16826958 16826958 16826959 16826960 **** 467 8 2 0 -2 0 2 40 0 RACE_FEAT_WEMIC 16826961 1 RACIAL_TYPE_WEMIC 6 0 1 wemic **** **** **** 4 30 3 1 INT 274 51 Wemic Wm 16826957 16826958 16826958 16826959 16826960 **** 467 8 2 0 -2 0 2 40 0 RACE_FEAT_WEMIC 16826961 1 RACIAL_TYPE_WEMIC 6 0 1 wemic **** **** **** 4 30 3 1 INT 274
52 Plant Pl 16833077 16833077 16833078 16833079 16833080 **** 51 0 -2 0 0 0 2 0 **** **** 0 0 RACIAL_TYPE_PLANT 4 15 0.95 plant **** **** **** 4 30 3 1 INT 2355 52 Plant Pl 16833077 16833077 16833078 16833079 16833080 **** 51 0 0 0 0 0 0 0 **** **** 0 0 RACIAL_TYPE_PLANT 4 15 0.95 plant **** **** **** 4 30 3 1 INT 2355
53 Brownie Bw 16826962 16826962 16826963 16826964 16826965 **** 55 -6 10 2 2 2 2 30 8 RACE_FEAT_BROWNI 8160 1 RACIAL_TYPE_BROWNIE 20 8 1 brownie **** **** **** 4 30 3 1 INT 278 53 Brownie Bw 16826962 16826962 16826963 16826964 16826965 **** 55 -6 10 2 2 2 2 30 8 RACE_FEAT_BROWNI 8160 1 RACIAL_TYPE_BROWNIE 20 8 1 brownie **** **** **** 4 30 3 1 INT 278
54 Krinth Kr 16833149 16833149 16833150 16833149 16833151 **** 5 0 0 0 -2 0 2 30 4 RACE_FEAT_KRINTH 16833149 1 RACIAL_TYPE_KRINTH 20 4 1 krinth **** **** **** 4 30 3 1 INT 267 54 Krinth Kr 16833149 16833149 16833150 16833149 16833151 **** 5 0 0 0 -2 0 2 30 4 RACE_FEAT_KRINTH 16833149 1 RACIAL_TYPE_KRINTH 20 4 1 krinth **** **** **** 4 30 3 1 INT 267
55 Goliath Go 16833166 16833166 16833167 16833170 16833171 **** 5 4 -2 0 0 0 2 30 0 RACE_FEAT_GOL 16833166 1 RACIAL_TYPE_GOLIATH 20 0 1 goliath **** **** **** 4 30 3 1 INT 274 55 Goliath Go 16833166 16833166 16833167 16833170 16833171 **** 5 4 -2 0 0 0 2 30 0 RACE_FEAT_GOL 16833166 1 RACIAL_TYPE_GOLIATH 20 0 1 goliath **** **** **** 4 30 3 1 INT 274
@@ -78,7 +78,7 @@
74 Muckdweller Mr 16836018 16836018 16836019 16836020 16836021 **** 206 -6 6 0 -2 -2 0 20 8 RACE_FEAT_MUCKD 8163 1 RACIAL_TYPE_MUCKDWELLER 15 8 1 muckdweller **** **** **** 4 30 3 1 INT 276 74 Muckdweller Mr 16836018 16836018 16836019 16836020 16836021 **** 206 -6 6 0 -2 -2 0 20 8 RACE_FEAT_MUCKD 8163 1 RACIAL_TYPE_MUCKDWELLER 15 8 1 muckdweller **** **** **** 4 30 3 1 INT 276
75 Aranea Ae 16836006 16836006 16836007 16836008 16836009 **** 158 0 4 4 4 2 4 50 9 RACE_FEAT_ARANEA 8163 1 RACIAL_TYPE_ARANEA 15 9 1 aranea **** **** **** 4 30 3 1 INT 284 75 Aranea Ae 16836006 16836006 16836007 16836008 16836009 **** 158 0 4 4 4 2 4 50 9 RACE_FEAT_ARANEA 8163 1 RACIAL_TYPE_ARANEA 15 9 1 aranea **** **** **** 4 30 3 1 INT 284
76 Chitine Ch 16832294 16832294 16832295 16832296 16832297 **** 2 **** 2 2 -4 **** 2 30 8 RACE_FEAT_CHIT 16832294 1 RACIAL_TYPE_CHITINE 15 8 1 chitine **** **** **** 4 30 3 1 INT 274 76 Chitine Ch 16832294 16832294 16832295 16832296 16832297 **** 2 **** 2 2 -4 **** 2 30 8 RACE_FEAT_CHIT 16832294 1 RACIAL_TYPE_CHITINE 15 8 1 chitine **** **** **** 4 30 3 1 INT 274
77 SpiretopDragon Sd 16835965 16835966 16835967 16835968 16835969 **** 375 -4 8 -4 -2 0 2 60 8 RACE_FEAT_SPDRAG 16835970 1 RACIAL_TYPE_SPIRETOPDRAGON 25 8 1 dragon **** **** **** 4 30 3 1 INT 272 77 SpiretopDragon Sd 16835965 16835966 16835967 16835968 16835969 **** 375 -4 8 -4 -2 0 2 60 8 RACE_FEAT_SPDRAG 16835970 0 RACIAL_TYPE_SPIRETOPDRAGON 25 8 1 dragon **** **** **** 4 30 3 1 INT 272
78 Jaebrin Ja 16852286 16852286 16852287 16852288 16852289 **** 6 -2 0 0 2 0 0 30 79 RACE_FEAT_JAEBRN 8163 1 RACIAL_TYPE_JAEBRIN 15 79 1 fey human **** **** 4 30 3 1 INT 278 78 Jaebrin Ja 16852286 16852286 16852287 16852288 16852289 **** 6 -2 0 0 2 0 0 30 79 RACE_FEAT_JAEBRN 8163 1 RACIAL_TYPE_JAEBRIN 15 79 1 fey human **** **** 4 30 3 1 INT 278
79 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 79 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
80 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 80 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

Binary file not shown.

View File

@@ -0,0 +1,109 @@
//::///////////////////////////////////////////////
//:: Burning Hands
//:: NW_S0_BurnHand
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Evocation [Fire]
Level: Fire 1, Sor/Wiz 1
Components: V, S
Casting Time: 1 standard action
Range: 15 ft.
Area: Cone-shaped burst
Duration: Instantaneous
Saving Throw: Reflex half
Spell Resistance: Yes
A cone of searing flame shoots from your fingertips.
Any creature in the area of the flames takes 1d4
points of fire damage per caster level (maximum 5d4).
Flammable materials burn if the flames touch them.
A character can extinguish burning items as a
full-round action.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 5, 2001
//:://////////////////////////////////////////////
//:: Last Updated On: April 5th, 2001
//:: VFX Pass By: Preston W, On: June 20, 2001
//:: Update Pass By: Preston W, On: July 23, 2001
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
if (!X2PreSpellCastCode()) return;
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell will fail if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Burning Hands' will not work underwater!", oPC);
return;
}
PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION);
//Declare major variables
location lTarget = PRCGetSpellTargetLocation();
int nCasterLevel = PRCGetCasterLevel(oCaster);
int nPenetr = nCasterLevel + SPGetPenetr();
int nMetaMagic = PRCGetMetaMagicFeat();
int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE);
int nSaveType = ChangedSaveType(EleDmg);
int nDice = PRCMin(5, nCasterLevel);
int nDamage;
float fDist;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while(GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
{
//Signal spell cast at event to fire.
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_BURNING_HANDS));
//Calculate the delay time on the application of effects based on the distance
//between the caster and the target
fDist = GetDistanceBetween(oCaster, oTarget)/20;
//Make SR check, and appropriate saving throw.
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDist) && oTarget != oCaster)
{
nDamage = d4(nDice);
//Enter Metamagic conditions
if(nMetaMagic & METAMAGIC_MAXIMIZE)
nDamage = 4 * nDice;//Damage is at max
if(nMetaMagic & METAMAGIC_EMPOWER)
nDamage += nDamage / 2; //Damage/Healing is +50%
nDamage += SpellDamagePerDice(oCaster, nDice);
//Run the damage through the various reflex save and evasion feats
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, oCaster), nSaveType);
if(nDamage > 0)
{
effect eFire = PRCEffectDamage(oTarget, nDamage, EleDmg);
// Apply effects to the currently selected target.
DelayCommand(fDist, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDist, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget));
PRCBonusDamage(oTarget);
}
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
PRCSetSchool();
}

Binary file not shown.

View File

@@ -0,0 +1,190 @@
//::///////////////////////////////////////////////
//:: Call Lightning
//:: NW_S0_CallLghtn.nss
//:: Copyright (c) 2001 Bioware Corp.
//::///////////////////////////////////////////////
/*
Evocation [Electricity]
Level: Drd 3
Components: V, S
Casting Time: 1 round
Range: Medium (100 ft. + 10 ft./level)
Effect: One or more 30-ft.-long vertical lines of lightning
Duration: 1 min./level
Saving Throw: Reflex half
Spell Resistance: Yes
Immediately upon completion of the spell, and once
per round thereafter, you may call down a 5-foot-wide,
30-foot-long, vertical bolt of lightning that deals
3d6 points of electricity damage. The bolt of lightning
flashes down in a vertical stroke at whatever target
point you choose within the spell<6C>s range (measured
from your position at the time). Any creature in the
target square or in the path of the bolt is affected.
You need not call a bolt of lightning immediately;
other actions, even spellcasting, can be performed.
However, each round after the first you may use a
standard action (concentrating on the spell) to call
a bolt. You may call a total number of bolts equal to
your caster level (maximum 10 bolts).
If you are outdoors and in a stormy area<65>a rain shower,
clouds and wind, hot and cloudy conditions, or even a
tornado (including a whirlwind formed by a djinni or an
air elemental of at least Large size)<29>each bolt deals
3d10 points of electricity damage instead of 3d6.
This spell functions indoors or underground but not
underwater.
*/
//:://////////////////////////////////////////////
//:: Notes: totally not like PnP version,
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 22, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 20, 2001
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
if (!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare major variables
object oCaster = OBJECT_SELF;
int nInt = GetLocalInt(oCaster, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nDamage;
int nCasterLvl = PRCGetCasterLevel(oCaster);
int nPenetr = nCasterLvl + SPGetPenetr();
int nMetaMagic = PRCGetMetaMagicFeat();
int nDice = PRCMin(10, nCasterLvl);
int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_ELECTRICAL);
int nSaveType = ChangedSaveType(EleDmg);
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = PRCGetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 10)
{
nCasterLvl = 10;
}
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Call Lightning' will not work underwater!", oCaster);
return;
}
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, oCaster))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_CALL_LIGHTNING));
//Get the distance between the explosion and the target to calculate delay
float fDelay = PRCGetRandomDelay(0.4, 1.75);
if (!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
{
//Roll damage for each target
int nDamage = d6(nDice);
//Resolve metamagic
if(nMetaMagic & METAMAGIC_MAXIMIZE)
nDamage = 6 * nDice;
if(nMetaMagic & METAMAGIC_EMPOWER)
nDamage += nDamage / 2;
nDamage += SpellDamagePerDice(oCaster, nDice);
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, oCaster), nSaveType);
if(nDamage > 0)
{
//Set the damage effect
effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg);
// Apply effects to the currently selected target.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
PRCBonusDamage(oTarget);
}
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
PRCSetSchool();
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oCaster, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oCaster, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oCaster, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oCaster, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oCaster, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oCaster, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oCaster, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oCaster));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oCaster));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oCaster));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Call Lightning' has caused a cave-in!", oCaster));
}
}

Binary file not shown.

View File

@@ -0,0 +1,277 @@
//::///////////////////////////////////////////////
//:: Chain Lightning
//:: NW_S0_ChLightn
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
The primary target is struck with 1d6 per caster,
1/2 with a reflex save. 1 secondary target per
level is struck for 1d6 / 2 caster levels. No
repeat targets can be chosen.
*/
//:://////////////////////////////////////////////
//:: Created By: Brennon Holmes
//:: Created On: March 8, 2001
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 26, 2001
//:: Update Pass By: Preston W, On: July 26, 2001
/*
bugfix by Kovi 2002.07.28
- successful saving throw and (improved) evasion was ignored for
secondary targets,
- all secondary targets suffered exactly the same damage
2002.08.25
- primary target was not effected
*/
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nCasterLevel = CasterLvl;
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nDoOnce = 0;
//Limit caster level
// June 2/04 - Bugfix: Cap the level BEFORE the damage calculation, not after. Doh.
if (nCasterLevel > 20)
{
nCasterLevel = 20;
}
int nInt=GetLocalInt(oPC, "Underwater");
int nDamage = d6(nCasterLevel);
int nDamStrike;
int nNumAffected = 0;
int nMetaMagic = PRCGetMetaMagicFeat();
//Declare lightning effect connected the casters hands
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF, BODY_NODE_HAND);;
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
effect eDamage;
object oFirstTarget = PRCGetSpellTargetObject();
object oHolder;
object oTarget;
location lSpellLocation;
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/is +50%
}
nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel);
CasterLvl +=SPGetPenetr();
int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_ELECTRICAL);
//Damage the initial target
if (spellsIsTarget(oFirstTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oFirstTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CHAIN_LIGHTNING));
//Make an SR Check
if (!PRCDoResistSpell(OBJECT_SELF, oFirstTarget,CasterLvl))
{
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
//Adjust damage via Reflex Save or Evasion or Improved Evasion
nDamStrike = PRCGetReflexAdjustedDamage(nDamage, oFirstTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY);
//Set the damage effect for the first target
eDamage = PRCEffectDamage(oTarget, nDamStrike, EleDmg);
//Apply damage to the first target and the VFX impact.
if(nDamStrike > 0)
{
SPApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oFirstTarget);
PRCBonusDamage(oFirstTarget);
SPApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oFirstTarget);
}
}
}
//Apply the lightning stream effect to the first target, connecting it with the caster
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oFirstTarget,0.5,FALSE);
//Reinitialize the lightning effect so that it travels from the first target to the next target
eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oFirstTarget, BODY_NODE_CHEST);
float fDelay = 0.2;
int nCnt = 0;
// *
// * Secondary Targets
// *
//Get the first target in the spell shape
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oFirstTarget), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
while (GetIsObjectValid(oTarget) && nCnt < nCasterLevel)
{
//Make sure the caster's faction is not hit and the first target is not hit
if (oTarget != oFirstTarget && spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
{
//Connect the new lightning stream to the older target and the new target
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5,FALSE));
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CHAIN_LIGHTNING));
//Do an SR check
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay))
{
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
nDamage = d6(nCasterLevel) ;
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/is +50%
}
nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel);
//Adjust damage via Reflex Save or Evasion or Improved Evasion
nDamStrike = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY);
//Apply the damage and VFX impact to the current target
eDamage = PRCEffectDamage(oTarget, nDamStrike /2, EleDmg);
if(nDamStrike > 0) //age > 0)
{
//Apply the VFX impact and damage effect (reflected upon PC)
if ((nInt == 1)&&(nDoOnce != 1))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oCaster);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oCaster);
FloatingTextStringOnCreature("The spell 'Chain Lightning' is reflected underwater!", oPC);
nDoOnce = 1;
}
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oTarget));
PRCBonusDamage(oTarget);
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget));
}
}
oHolder = oTarget;
//change the currect holder of the lightning stream to the current target
if (GetObjectType(oTarget) == OBJECT_TYPE_CREATURE)
{
eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oHolder, BODY_NODE_CHEST);
}
else
{
// * April 2003 trying to make sure beams originate correctly
effect eNewLightning = EffectBeam(VFX_BEAM_LIGHTNING, oHolder, BODY_NODE_CHEST);
if(GetIsEffectValid(eNewLightning))
{
eLightning = eNewLightning;
}
}
fDelay = fDelay + 0.1f;
}
//Count the number of targets that have been hit.
if(GetObjectType(oTarget) == OBJECT_TYPE_CREATURE)
{
nCnt++;
}
// April 2003: Setting the new origin for the beam
// oFirstTarget = oTarget;
//Get the next target in the shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oFirstTarget), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Chain Lightning' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,137 @@
//::///////////////////////////////////////////////
//:: Cone of Cold
//:: NW_S0_ConeCold
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Cone of cold creates an area of extreme cold,
// originating at your hand and extending outward
// in a cone. It drains heat, causing 1d6 points of
// cold damage per caster level (maximum 15d6).
*/
//:://////////////////////////////////////////////
//:: Created By: Noel Borstad
//:: Created On: 10/18/02000
//:://////////////////////////////////////////////
//:: Last Updated By: Aidan Scanlan On: April 11, 2001
//:: Update Pass By: Preston W, On: July 25, 2001
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
float SpellDelay (object oTarget, int nShape);
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
object oCaster = OBJECT_SELF;
int nCasterLevel = CasterLvl;
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
float fDelay;
location lTargetLocation = PRCGetSpellTargetLocation();
object oTarget;
//Limit Caster level for the purposes of damage.
if (nCasterLevel > 15)
{
nCasterLevel = 15;
}
CasterLvl +=SPGetPenetr();
int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_COLD);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
// March 2003. Removed this as part of the reputation pass
// if((PRCGetSpellId() == 340 && !GetIsFriend(oTarget)) || PRCGetSpellId() == 25)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CONE_OF_COLD));
//Get the distance between the target and caster to delay the application of effects
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20.0;
//Make SR check, and appropriate saving throw(s).
if(!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay) && (oTarget != OBJECT_SELF))
{
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
//Detemine damage
nDamage = d6(nCasterLevel);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel);
//Adjust damage according to Reflex Save, Evasion or Improved Evasion
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD);
// Apply effects to the currently selected target.
effect eCold = PRCEffectDamage(oTarget, nDamage, EleDmg);
effect eVis = EffectVisualEffect(VFX_IMP_FROST_L);
if(nDamage > 0)
{
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCold, oCaster));
FloatingTextStringOnCreature("The spell 'Cone of Cold' is reflected underwater!", oPC);
}
//Apply delayed effects
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eCold, oTarget));
PRCBonusDamage(oTarget);
}
}
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

View File

@@ -0,0 +1,123 @@
//::///////////////////////////////////////////////
//:: Delayed Blast Fireball
//:: NW_S0_DelFirebal.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
The caster creates a trapped area which detects
the entrance of enemy creatures into 3 m area
around the spell location. When tripped it
causes a fiery explosion that does 1d6 per
caster level up to a max of 20d6 damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: July 27, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Delayed Blast Fireball' will not work underwater!", oPC);
return;
}
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare major variables including Area of Effect Object
effect eAOE = EffectAreaOfEffect(AOE_PER_DELAY_BLAST_FIREBALL);
location lTarget = PRCGetSpellTargetLocation();
int CasterLvl = PRCGetCasterLevel();
int nDuration = CasterLvl / 2;
//Make sure the duration is at least one round
if(nDuration == 0)
nDuration = 1;
int nMetaMagic = PRCGetMetaMagicFeat();
//Check Extend metamagic feat.
if (nMetaMagic & METAMAGIC_EXTEND)
{
nDuration = nDuration *2;//Duration is +100%
}
//Create an instance of the AOE Object using the Apply Effect function
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(nDuration));
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Delayed Blast Fireball' has caused a cave-in!", oPC));
}
object oAoE = GetAreaOfEffectObject(lTarget, "VFX_PER_DELAY_BLAST_FIREBALL");
SetAllAoEInts(SPELL_DELAYED_BLAST_FIREBALL, oAoE, PRCGetSpellSaveDC(SPELL_DELAYED_BLAST_FIREBALL, SPELL_SCHOOL_EVOCATION), 0, CasterLvl);
SetLocalInt(oAoE, "DelayedBlastFireballDamage", ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE));
PRCSetSchool();
}

View File

@@ -0,0 +1,203 @@
//::///////////////////////////////////////////////
//:: Elemental Swarm
//:: NW_S0_EleSwarm.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spell creates a conduit from the caster
to the elemental planes. The first elemental
summoned is a 24 HD Air elemental. Whenever an
elemental dies it is replaced by the next
elemental in the chain Air, Earth, Water, Fire
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 12, 2001
//:://////////////////////////////////////////////
//:: Update Pass By: Preston W, On: July 30, 2001
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
void main()
{
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
//Declare major variables
object oCaster = OBJECT_SELF;
int CasterLvl = PRCGetCasterLevel(oCaster);
int nMetaMagic = PRCGetMetaMagicFeat();
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
if(GetPRCSwitch(PRC_PNP_ELEMENTAL_SWARM)
&& GetPRCSwitch(PRC_MULTISUMMON))
{
float fDuration = IntToFloat(60*10*CasterLvl);
float fDelay = 600.0;
if(GetPRCSwitch(PRC_SUMMON_ROUND_PER_LEVEL))
{
fDuration = RoundsToSeconds(CasterLvl);
fDelay = RoundsToSeconds(1);
}
//Check for metamagic duration
if ((nMetaMagic & METAMAGIC_EXTEND))
fDuration = fDuration * 2.0; //Duration is +100%
MultisummonPreSummon();
int i;
int nVFX = VFX_FNF_SUMMON_MONSTER_3;
string sResRef;
int nElement = Random(4);
//Spell changes if caster is underwater.
if (nInt == 1)
{
switch(nElement)
{
case 0:
sResRef = "NW_S_AIRHUGE";
break;
case 1:
sResRef = "NW_S_WATERHUGE";
break;
case 2:
sResRef = "NW_S_FIREHUGE";
break;
case 3:
sResRef = "NW_S_EARTHHUGE";
break;
}
}
else
{
switch(nElement)
{
case 0:
sResRef = "NW_S_WATERHUGE";
break;
case 1:
sResRef = "NW_S_WATERHUGE";
break;
case 2:
sResRef = "NW_S_WATERHUGE";
break;
case 3:
sResRef = "NW_S_WATERHUGE";
break;
}
}
effect eSummon = EffectSummonCreature(sResRef, nVFX);
int nHugeElementals = d4(2);
for(i=0; i<nHugeElementals; i++)
{
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, PRCGetSpellTargetLocation(), fDuration);
}
//Spell changes if caster is underwater.
if (nInt == 1)
{
switch(nElement)
{
case 0:
sResRef = "NW_S_WATERGREAT";
break;
case 1:
sResRef = "NW_S_WATERGREAT";
break;
case 2:
sResRef = "NW_S_WATERGREAT";
break;
case 3:
sResRef = "NW_S_WATERGREAT";
break;
}
}
else
{
switch(nElement)
{
case 0:
sResRef = "NW_S_AIRGREAT";
break;
case 1:
sResRef = "NW_S_WATERGREAT";
break;
case 2:
sResRef = "NW_S_FIREGREAT";
break;
case 3:
sResRef = "NW_S_EARTHGREAT";
break;
}
}
eSummon = EffectSummonCreature(sResRef, nVFX);
int nGreaterElementals = d4(1);
for(i=0; i<nGreaterElementals; i++)
{
DelayCommand(fDelay, MultisummonPreSummon());
DelayCommand(fDelay, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetLocation(OBJECT_SELF), fDuration-fDelay));
}
//Spell changes if caster is underwater.
if (nInt == 1)
{
switch(nElement)
{
case 0:
sResRef = "NW_S_WATERELDER";
break;
case 1:
sResRef = "NW_S_WATERELDER";
break;
case 2:
sResRef = "NW_S_WATERELDER";
break;
case 3:
sResRef = "NW_S_WATERELDER";
break;
}
}
else
{
switch(nElement)
{
case 0:
sResRef = "NW_S_AIRELDER";
break;
case 1:
sResRef = "NW_S_WATERELDER";
break;
case 2:
sResRef = "NW_S_FIREELDER";
break;
case 3:
sResRef = "NW_S_EARTHELDER";
break;
}
}
eSummon = EffectSummonCreature(sResRef, nVFX);
DelayCommand(fDelay*2.0, MultisummonPreSummon());
DelayCommand(fDelay*2.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetLocation(OBJECT_SELF), fDuration-(fDelay*2.0)));
}
else
{
int nDuration = 24;
effect eSummon;
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
float fDuration = HoursToSeconds(nDuration);
if(GetPRCSwitch(PRC_SUMMON_ROUND_PER_LEVEL))
fDuration = RoundsToSeconds(CasterLvl);
//Check for metamagic duration
if((nMetaMagic & METAMAGIC_EXTEND))
fDuration = fDuration * 2.0; //Duration is +100%
//Set the summoning effect
eSummon = EffectSwarm(FALSE, "NW_SW_AIRGREAT", "NW_SW_WATERGREAT","NW_SW_EARTHGREAT","NW_SW_FIREGREAT");
//Apply the summon effect
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSummon, OBJECT_SELF, fDuration, TRUE,-1,CasterLvl);
DelayCommand(0.5, AugmentSummonedCreature("NW_SW_AIRGREAT"));
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

View File

@@ -0,0 +1,168 @@
//::///////////////////////////////////////////////
//:: Fireball
//:: NW_S0_Fireball
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// A fireball is a burst of flame that detonates with
// a low roar and inflicts 1d6 points of damage per
// caster level (maximum of 10d6) to all creatures
// within the area. Unattended objects also take
// damage. The explosion creates almost no pressure.
*/
//:://////////////////////////////////////////////
//:: Created By: Noel Borstad
//:: Created On: Oct 18 , 2000
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 6, 2001
//:: Last Updated By: AidanScanlan, On: April 11, 2001
//:: Last Updated By: Preston Watamaniuk, On: May 25, 2001
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nUA = GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nUA == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Fireball' will not work underwater!", oPC);
return;
}
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare major variables
location lTarget = PRCGetSpellTargetLocation();
int nCasterLvl = PRCGetCasterLevel(oCaster);
int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE);
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eDam;
//Limit Caster level for the purposes of damage
int nDice = PRCMin(10, nCasterLvl);
nCasterLvl += SPGetPenetr();
//Apply the fireball explosion at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_FIREBALL));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if (!PRCDoResistSpell(oCaster, oTarget, nCasterLvl, fDelay))
{
//Resolve metamagic
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
nDamage = 6 * nDice;
else
//Roll damage for each target
nDamage = d6(nDice);
if ((nMetaMagic & METAMAGIC_EMPOWER))
nDamage += nDamage / 2;
nDamage += SpellDamagePerDice(OBJECT_SELF, nDice);
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget, oCaster)), SAVING_THROW_TYPE_FIRE);
if(nDamage > 0)
{
//Set the damage effect
eDam = PRCEffectDamage(oTarget, nDamage, EleDmg);
// Apply effects to the currently selected target.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
PRCBonusDamage(oTarget);
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
PRCSetSchool();
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Fireball' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,170 @@
//::///////////////////////////////////////////////
//:: Fire Storm
//:: NW_S0_FireStm
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates a zone of destruction around the caster
within which all living creatures are pummeled
with fire.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 11, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 21, 2001
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Fire Storm' will not work underwater!", oPC);
return;
}
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare major variables
location lTarget = GetLocation(oCaster);
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
int nDamage2;
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE);
int nCasterLevel = CasterLvl;
if(nCasterLevel > 20)
{
nCasterLevel = 20; //bugfix, was == 20
}
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eFireStorm = EffectVisualEffect(VFX_FNF_FIRESTORM);
float fDelay;
CasterLvl +=SPGetPenetr();
//Apply Fire and Forget Visual in the area;
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFireStorm, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while(GetIsObjectValid(oTarget))
{
//This spell smites everyone who is more than 2 meters away from the caster.
//if (GetDistanceBetween(oTarget, OBJECT_SELF) > 2.0)
//{
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
{
fDelay = PRCGetRandomDelay(1.5, 2.5);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIRE_STORM));
//Make SR check, and appropriate saving throw(s).
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay))
{
//Roll Damage
nDamage = d6(nCasterLevel);
//Enter Metamagic conditions
if(nMetaMagic & METAMAGIC_MAXIMIZE)
nDamage = 6 * nCasterLevel;//Damage is at max
if(nMetaMagic & METAMAGIC_EMPOWER)
nDamage = nDamage + (nDamage/2);//Damage/Healing is +50%
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
//Save versus both holy and fire damage
nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel);
nDamage2 = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, (nDC), SAVING_THROW_TYPE_DIVINE);
nDamage = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, (nDC), SAVING_THROW_TYPE_FIRE);
if(nDamage)
{
// Apply effects to the currently selected target. For this spell we have used
//both Divine and Fire damage.
effect eDivine = PRCEffectDamage(oTarget, nDamage2, DAMAGE_TYPE_DIVINE);
effect eFire = PRCEffectDamage(oTarget, nDamage, EleDmg);
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDivine, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
//}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
PRCSetSchool();
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Fire Storm' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,110 @@
//::///////////////////////////////////////////////
//:: Flame Arrow
//:: NW_S0_FlmArrow
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Fires a stream of fiery arrows at the selected
target that do 4d6 damage per arrow. 1 Arrow
per 4 levels is created.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 20, 2001
//:: Updated By: Georg Zoeller, Aug 18 2003: Uncapped
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_sp_tch"
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Flame Arrow' will not work underwater!", oPC);
return;
}
if (!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
//Declare major variables
object oTarget = PRCGetSpellTargetObject();
int nCasterLvl = PRCGetCasterLevel(oCaster);
int nDC = PRCGetSaveDC(oTarget, oCaster);
int nPenetr = nCasterLvl + SPGetPenetr();
int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE);
int nSaveType = ChangedSaveType(EleDmg);
int nMetaMagic = PRCGetMetaMagicFeat();
float fDist = GetDistanceBetween(oCaster, oTarget);
float fDelay = fDist/(3.0 * log(fDist) + 2.0);
int nDamage;
int nCnt;
effect eMissile = EffectVisualEffect(VFX_IMP_MIRV_FLAME);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
//Limit missiles to five
int nMissiles = nCasterLvl / 4;
if(nMissiles == 0)
nMissiles = 1;
/* Uncapped because PHB doesn't list any cap and we now got epic levels
else if (nMissiles > 5)
nMissiles = 5;*/
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_FLAME_ARROW));
//Apply a single damage hit for each missile instead of as a single mass
//Make SR Check
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
{
int iAttackRoll = 0;
for(nCnt = 1; nCnt <= nMissiles; nCnt++)
{
// causes them each to make a ranged touch attack
iAttackRoll = PRCDoRangedTouchAttack(oTarget);
if(iAttackRoll > 0)
{
//Roll damage
nDamage = d6(4);
//Enter Metamagic conditions
if(nMetaMagic & METAMAGIC_MAXIMIZE)
nDamage = 24;//Damage is at max
if(nMetaMagic & METAMAGIC_EMPOWER)
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
nDamage += SpellDamagePerDice(oCaster, 4);
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, nSaveType);
// only add sneak attack damage and bonus damage to first projectile
if(nCnt == 1)
{
nDamage += SpellSneakAttackDamage(oCaster, oTarget);
PRCBonusDamage(oTarget);
}
//Set damage effect
effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg);
//Apply the MIRV and damage effect
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget);
}
}
}
else
// * May 2003: Make it so the arrow always appears, even if resisted
ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget);
}
PRCSetSchool();
}

View File

@@ -0,0 +1,114 @@
//::///////////////////////////////////////////////
//:: Flame Lash
//:: NW_S0_FlmLash.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates a whip of fire that targets a single
individual
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 21, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Flame Lash' will not work underwater!", oPC);
return;
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oTarget = PRCGetSpellTargetObject();
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE);
int nCasterLevel = CasterLvl;
int nMetaMagic = PRCGetMetaMagicFeat();
if(nCasterLevel > 3)
{
nCasterLevel = (nCasterLevel-3)/3;
}
else
{
nCasterLevel = 0;
}
int nDamage = d6(2 + nCasterLevel);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 6 * (2 + nCasterLevel);//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage += SpellDamagePerDice(OBJECT_SELF, 2 + nCasterLevel);
CasterLvl +=SPGetPenetr();
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
effect eRay = EffectBeam(VFX_BEAM_FIRE_LASH, OBJECT_SELF, BODY_NODE_HAND);
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7,FALSE);
if(!GetIsReactionTypeFriendly(oTarget))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FLAME_LASH));
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, 1.0))
{
//nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF);
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (nDC), SAVING_THROW_TYPE_FIRE);
effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg);
if(nDamage > 0)
{
//Apply the VFX impact and effects
DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
}
}
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

Binary file not shown.

View File

@@ -0,0 +1,108 @@
//::///////////////////////////////////////////////
//:: Flame Strike
//:: NW_S0_FlmStrike
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// A flame strike is a vertical column of divine fire
// roaring downward. The spell deals 1d6 points of
// damage per level, to a maximum of 15d6. Half the
// damage is fire damage, but the rest of the damage
// results directly from divine power and is therefore
// not subject to protection from elements (fire),
// fire shield (chill shield), etc.
*/
//:://////////////////////////////////////////////
//:: Created By: Noel Borstad
//:: Created On: Oct 19, 2000
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 20, 2001
//:: Update Pass By: Preston W, On: Aug 1, 2001
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Flame Strike' will not work underwater!", oPC);
return;
}
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare major variables
location lTarget = PRCGetSpellTargetLocation();
int nCasterLvl = PRCGetCasterLevel(oCaster);
int nPenetr = nCasterLvl + SPGetPenetr();
int nMetaMagic = PRCGetMetaMagicFeat();
int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE);
int nSaveType = ChangedSaveType(EleDmg);
int nDice = PRCMin(15, nCasterLvl);
int nDamage, nDamage2;
effect eStrike = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
effect eHoly, eFire;
//Apply the location impact visual to the caster location instead of caster target creature.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, FALSE, OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE|OBJECT_TYPE_DOOR);
//Cycle through the targets within the spell shape until an invalid object is captured.
while(GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_FLAME_STRIKE));
//Make SR check, and appropriate saving throw(s).
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, 0.6))
{
nDamage = d6(nDice);
if(nMetaMagic & METAMAGIC_MAXIMIZE)
nDamage = 6 * nDice;
if(nMetaMagic & METAMAGIC_EMPOWER)
nDamage = nDamage + (nDamage/2);
nDamage += SpellDamagePerDice(oCaster, nDice);
//Adjust the damage based on Reflex Save, Evasion and Improved Evasion
int nDC = PRCGetSaveDC(oTarget, oCaster);
nDamage2 = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, nDC, nSaveType);
//Make a faction check so that only enemies receieve the full brunt of the damage.
if(!GetIsFriend(oTarget))
{
nDamage = PRCGetReflexAdjustedDamage(nDamage/2, oTarget, nDC, SAVING_THROW_TYPE_DIVINE);
if(nDamage)
{
eHoly = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE);
DelayCommand(0.6, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHoly, oTarget));
}
}
// Apply effects to the currently selected target.
if(nDamage2)
{
eFire = PRCEffectDamage(oTarget, nDamage2, EleDmg);
DelayCommand(0.6, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget));
DelayCommand(0.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, FALSE, OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE|OBJECT_TYPE_DOOR);
}
PRCSetSchool();
}

View File

@@ -0,0 +1,198 @@
//::///////////////////////////////////////////////
//:: Ice Storm
//:: NW_S0_IceStorm
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Everyone in the area takes 3d6 Bludgeoning
and 2d6 Cold damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 12, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oCaster = OBJECT_SELF;
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_COLD);
int nCasterLvl = CasterLvl;
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage, nDamage2, nDamage3;
int nVariable = nCasterLvl/3;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_ICESTORM); //USE THE ICESTORM FNF
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
effect eDam,eDam2, eDam3;
// These last for one round. Added as they are in the 3.5 PHB
effect eLink = EffectLinkEffects(EffectSkillDecrease(SKILL_LISTEN, 4), EffectMovementSpeedDecrease(50));
//Get the spell target location as opposed to the spell target.
location lTarget = PRCGetSpellTargetLocation();
CasterLvl +=SPGetPenetr();
//Apply the ice storm VFX at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
fDelay = PRCGetRandomDelay(0.75, 2.25);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_ICE_STORM));
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay))
{
//Roll damage for each target
nDamage = d6(3);
nDamage2 = d6(2);
nDamage3 = d6(nVariable);
//Resolve metamagic
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 18;
nDamage2 = 12;
nDamage3 = 6 * nVariable;
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage / 2);
nDamage2 = nDamage2 + (nDamage2 / 2);
nDamage3 = nDamage3 + (nDamage3 / 2);
}
nDamage2 = nDamage2 + nDamage3;
nDamage += SpellDamagePerDice(oCaster, 3);
nDamage2 += SpellDamagePerDice(oCaster, 2+nVariable);
//Set the damage effect
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_BLUDGEONING);
eDam2 = PRCEffectDamage(oTarget, nDamage2, EleDmg);
//Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
//Apply the ice storm VFX at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, GetLocation(oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oCaster));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the impact that erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster));
FloatingTextStringOnCreature("The spell 'Ice Storm' is reflected underwater!", oPC);
}
// Apply effects to the currently selected target.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
PRCBonusDamage(oTarget);
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the impact that erupts on the target not on the ground.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0,TRUE,-1,CasterLvl);
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Ice Storm' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,152 @@
//::///////////////////////////////////////////////
//:: Implosion
//:: NW_S0_Implosion.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
All persons within a 5ft radius of the spell must
save at +3 DC or die.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 13, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
object oTarget;
effect eDeath = EffectDeath(TRUE);
if(!GetPRCSwitch(PRC_165_DEATH_IMMUNITY))
eDeath = SupernaturalEffect(eDeath);
effect eImplode= EffectVisualEffect(VFX_FNF_IMPLOSION);
float fDelay;
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
CasterLvl +=SPGetPenetr();
//Apply the implose effect
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImplode, PRCGetSpellTargetLocation());
//Get the first target in the shape
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, PRCGetSpellTargetLocation());
while (GetIsObjectValid(oTarget))
{
if (oTarget != OBJECT_SELF
&& spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_IMPLOSION));
fDelay = PRCGetRandomDelay(0.4, 1.2);
//Make SR check
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay) && !GetIsIncorporeal(oTarget))
{
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
//Make Reflex save
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL, OBJECT_SELF, fDelay))
{
DeathlessFrenzyCheck(oTarget);
//Apply death effect and the VFX impact
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget));
}
}
}
//Get next target in the shape
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, PRCGetSpellTargetLocation());
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Implosion' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,65 @@
//::///////////////////////////////////////////////
//:: Incendiary Cloud
//:: NW_S0_IncCloud.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Person within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare major variables, including the Area of Effect object.
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Capture the spell target location so that the AoE object can be created.
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Incendiary Cloud' will not work underwater!", oPC);
return;
}
effect eAOE = EffectAreaOfEffect(AOE_PER_FOGFIRE);
//Capture the spell target location so that the AoE object can be created.
location lTarget = PRCGetSpellTargetLocation();
int CasterLvl = PRCGetCasterLevel();
int nDuration = CasterLvl;
effect eImpact = EffectVisualEffect(260);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, lTarget);
if(nDuration < 1)
{
nDuration = 1;
}
int nMetaMagic = PRCGetMetaMagicFeat();
//Check for metamagic extend
if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND))
{
nDuration = nDuration *2; //Duration is +100%
}
//Create the object at the location so that the objects scripts will start working.
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(nDuration));
object oAoE = GetAreaOfEffectObject(lTarget, "VFX_PER_FOGFIRE");
SetAllAoEInts(SPELL_INCENDIARY_CLOUD, oAoE, PRCGetSpellSaveDC(SPELL_INCENDIARY_CLOUD, SPELL_SCHOOL_EVOCATION), 0, CasterLvl);
SetLocalInt(oAoE, "IC_Damage", ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE));
PRCSetSchool();
}

View File

@@ -0,0 +1,85 @@
//::///////////////////////////////////////////////
//:: Incendiary Cloud
//:: NW_S0_IncCloud.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Person within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: March 2003: Removed movement speed penalty
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
//Declare major variables
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
effect eDam;
object oTarget;
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
// effect eSpeed = EffectMovementSpeedDecrease(50);
effect eVis2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = eVis2; //EffectLinkEffects(eSpeed, eVis2);
float fDelay;
//Capture the first target object in the shape.
oTarget = GetEnteringObject();
int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator());
//Declare the spell shape, size and the location.
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_INCENDIARY_CLOUD));
//Make SR check, and appropriate saving throw(s).
if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr, fDelay))
{
fDelay = PRCGetRandomDelay(0.5, 2.0);
//Roll damage.
nDamage = d6(4);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 24;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 4);
//Adjust damage for Reflex Save, Evasion and Improved Evasion
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, GetAreaOfEffectCreator(), SPELL_INCENDIARY_CLOUD), SAVING_THROW_TYPE_FIRE, GetAreaOfEffectCreator());
// Apply effects to the currently selected target.
eDam = PRCEffectDamage(oTarget, nDamage, GetLocalInt(OBJECT_SELF, "IC_Damage"));
if(nDamage > 0)
{
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
PRCBonusDamage(oTarget);
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
// SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eSpeed, oTarget);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

View File

@@ -0,0 +1,71 @@
//::///////////////////////////////////////////////
//:: Incendiary Cloud: On Exit
//:: NW_S0_IncCloudB.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
All creatures within the AoE take 2d6 acid damage
per round and upon entering if they fail a Fort Save
their movement is halved.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: Update Pass By: Preston W, On: July 20, 2001
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
//Declare major variables
//Get the object that is exiting the AOE
object oTarget = GetExitingObject();
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int bValid = FALSE;
effect eAOE;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Incendiary Cloud' will not work underwater!", oPC);
return;
}
if(GetHasSpellEffect(SPELL_INCENDIARY_CLOUD, oTarget))
{
//Search through the valid effects on the target.
eAOE = GetFirstEffect(oTarget);
while (GetIsEffectValid(eAOE) && bValid == FALSE)
{
if (GetEffectCreator(eAOE) == GetAreaOfEffectCreator())
{
if(GetEffectType(eAOE) == EFFECT_TYPE_MOVEMENT_SPEED_DECREASE)
{
//If the effect was created by the Acid_Fog then remove it
if(GetEffectSpellId(eAOE) == SPELL_INCENDIARY_CLOUD)
{
RemoveEffect(oTarget, eAOE);
bValid = TRUE;
}
}
}
//Get next effect on the target
eAOE = GetNextEffect(oTarget);
}
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

View File

@@ -0,0 +1,111 @@
//::///////////////////////////////////////////////
//:: Incendiary Cloud
//:: NW_S0_IncCloudC.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Objects within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: Updated By: GeorgZ 2003-08-21: Now affects doors and placeables as well
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
effect eDam;
object oTarget;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
float fDelay;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Incendiary Cloud' will not work underwater!", oPC);
return;
}
//Capture the first target object in the shape.
//--------------------------------------------------------------------------
// GZ 2003-Oct-15
// When the caster is no longer there, all functions calling
// GetAreaOfEffectCreator will fail. Its better to remove the barrier then
//--------------------------------------------------------------------------
object aoeCreator = GetAreaOfEffectCreator();
if (!GetIsObjectValid(aoeCreator))
{
DestroyObject(OBJECT_SELF);
return;
}
int CasterLvl = PRCGetCasterLevel(aoeCreator);
int nPenetr = SPGetPenetrAOE(aoeCreator,CasterLvl);
int EleDmg = GetLocalInt(OBJECT_SELF, "IC_Damage");
oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Declare the spell shape, size and the location.
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoeCreator))
{
fDelay = PRCGetRandomDelay(0.5, 2.0);
//Make SR check, and appropriate saving throw(s).
if(!PRCDoResistSpell(aoeCreator, oTarget,nPenetr, fDelay))
{
SignalEvent(oTarget, EventSpellCastAt(aoeCreator, SPELL_INCENDIARY_CLOUD));
//Roll damage.
nDamage = d6(4);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 24;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage += SpellDamagePerDice(aoeCreator, 4);
int nDC = PRCGetSaveDC(oTarget,aoeCreator);
//Adjust damage for Reflex Save, Evasion and Improved Evasion
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE, aoeCreator);
// Apply effects to the currently selected target.
eDam = PRCEffectDamage(oTarget, nDamage, EleDmg);
if(nDamage > 0)
{
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
PRCBonusDamage(oTarget);
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

View File

@@ -0,0 +1,142 @@
//::///////////////////////////////////////////////
//:: Lightning Bolt
//:: NW_S0_LightnBolt
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Does 1d6 per level in a 5ft tube for 30m
*/
//:://////////////////////////////////////////////
//:: Created By: Noel Borstad
//:: Created On: March 8, 2001
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: May 2, 2001
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nDoOnce = 0;
int nInt=GetLocalInt(oPC, "Underwater");
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_ELECTRICAL);
int nCasterLevel = CasterLvl;
//Limit caster level
if (nCasterLevel > 10)
{
nCasterLevel = 10;
}
int nDamage;
int nMetaMagic = PRCGetMetaMagicFeat();
//Set the lightning stream to start at the caster's hands
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF, BODY_NODE_HAND);
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
effect eDamage;
object oTarget = PRCGetSpellTargetObject();
location lTarget = GetLocation(oTarget);
object oNextTarget, oTarget2;
float fDelay;
int nCnt = 1;
CasterLvl +=SPGetPenetr();
oTarget2 = GetNearestObject(OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nCnt);
while(GetIsObjectValid(oTarget2) && GetDistanceToObject(oTarget2) <= 30.0)
{
//Get first target in the lightning area by passing in the location of first target and the casters vector (position)
oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, 30.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF));
while (GetIsObjectValid(oTarget))
{
//Exclude the caster from the damage effects
if (oTarget != OBJECT_SELF && oTarget2 == oTarget)
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_LIGHTNING_BOLT));
//Make an SR check
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl))
{
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
//Roll damage
nDamage = d6(nCasterLevel);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 6 * nCasterLevel;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel);
//Adjust damage based on Reflex Save, Evasion and Improved Evasion
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ELECTRICITY);
//Set damage effect
eDamage = PRCEffectDamage(oTarget, nDamage, EleDmg);
if(nDamage > 0)
{
fDelay = PRCGetSpellEffectDelay(GetLocation(oTarget), oTarget);
//Apply the VFX impact and damage effect (reflected upon PC)
if ((nInt == 1)&&(nDoOnce != 1))
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oCaster));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oCaster));
FloatingTextStringOnCreature("The spell 'Lightning Bolt' is reflected underwater!", oPC);
nDoOnce = 1;
}
//Apply VFX impcat, damage effect and lightning effect
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oTarget));
PRCBonusDamage(oTarget);
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget));
}
}
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,1.0,FALSE);
//Set the currect target as the holder of the lightning effect
oNextTarget = oTarget;
eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNextTarget, BODY_NODE_CHEST);
}
}
//Get the next object in the lightning cylinder
oTarget = MyNextObjectInShape(SHAPE_SPELLCYLINDER, 30.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF));
}
nCnt++;
oTarget2 = GetNearestObject(OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nCnt);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

View File

@@ -0,0 +1,123 @@
//::///////////////////////////////////////////////
//:: Meteor Swarm
//:: NW_S0_MetSwarm
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Everyone in a 50ft radius around the caster
takes 20d6 fire damage. Those within 6ft of the
caster will take no damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 24 , 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 22, 2001
//:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
CasterLvl +=SPGetPenetr();
int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE);
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic;
int nDamage;
effect eFire;
effect eMeteor = EffectVisualEffect(VFX_FNF_METEOR_SWARM);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Meteor Swarm' will not work underwater!", oPC);
return;
}
//Apply the meteor swarm VFX area impact
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eMeteor, GetLocation(OBJECT_SELF));
//Get first object in the spell area
float fDelay;
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
{
fDelay = PRCGetRandomDelay();
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_METEOR_SWARM));
//Make sure the target is outside the 2m safe zone
if (GetDistanceBetween(oTarget, OBJECT_SELF) > 2.0)
{
//Make SR check
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, 0.5))
{
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
//Roll damage
nDamage = d6(20);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 120;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage += SpellDamagePerDice(OBJECT_SELF, 20);
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (nDC),SAVING_THROW_TYPE_FIRE);
//Set the damage effect
eFire = PRCEffectDamage(oTarget, nDamage, EleDmg);
if(nDamage > 0)
{
//Apply damage effect and VFX impact.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget));
PRCBonusDamage(oTarget);
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
}
//Get next target in the spell area
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

View File

@@ -0,0 +1,167 @@
//::///////////////////////////////////////////////
//:: [Sound Burst]
//:: [NW_S0_SndBurst.nss]
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
/*
Evocation [Sonic]
Level: Brd 2, Clr 2
Components: V, S, F/DF
Casting Time: 1 standard action
Range: Close (25 ft. + 5 ft./2 levels)
Area: 10-ft.-radius spread
Duration: Instantaneous
Saving Throw: Fortitude partial
Spell Resistance: Yes
You blast an area with a tremendous cacophony.
Every creature in the area takes 1d8 points of
sonic damage and must succeed on a Fortitude save
to avoid being stunned for 1 round.
Creatures that cannot hear are not stunned but
are still damaged.
Arcane Focus
A musical instrument.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 31, 2001
//:://////////////////////////////////////////////
//:: Last Updated By: Georg Z, Oct. 2003
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
location lLoc = PRCGetSpellTargetLocation();
int nCasterLevel = PRCGetCasterLevel(oCaster);
int nPenetr = nCasterLevel + SPGetPenetr();
int nMetaMagic = PRCGetMetaMagicFeat();
int EleDmg = ChangedElementalDamage(oCaster, DAMAGE_TYPE_SONIC);
int nSaveType = ChangedSaveType(EleDmg);
effect eFNF = EffectVisualEffect(VFX_FNF_SOUND_BURST);
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
effect eStun = EffectStunned();
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eStun, eMind);
eLink = EffectLinkEffects(eLink, eDur);
//Apply the FNF to the spell location
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, lLoc);
//Get the first target in the spell area
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lLoc);
while(GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_SOUND_BURST));
//Make a SR check
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr))
{
// Should not work on creatures already deafened or silenced
if(!PRCGetHasEffect(EFFECT_TYPE_DEAF, oTarget) && !PRCGetHasEffect(EFFECT_TYPE_SILENCE, oTarget))
{
int nDC = PRCGetSaveDC(oTarget, oCaster);
//Make a Fortitude roll to avoid being stunned
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, nSaveType))
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2), TRUE, SPELL_SOUND_BURST, nCasterLevel);
}
//Roll damage
int nDamage = d8();
//Make meta magic checks
if(nMetaMagic & METAMAGIC_MAXIMIZE)
nDamage = 8;
if(nMetaMagic & METAMAGIC_EMPOWER)
nDamage += nDamage / 2;
//Set the damage effect
nDamage += SpellDamagePerDice(oCaster, 1);
effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg);
//Apply the VFX impact and damage effect
DelayCommand(0.01, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}
//Get the next target in the spell area
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lLoc);
}
PRCSetSchool();
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Sound Burst' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,115 @@
//::///////////////////////////////////////////////
//:: Storm of Vengeance: Heartbeat
//:: NW_S0_StormVenC.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates an AOE that decimates the enemies of
the cleric over a 30ft radius around the caster
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 8, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003
//:: Elemental Damage note: Only made the lightning aspect variable, the acid aspect is always acid.
//:: the Lightning part seemed like the better of the 2 to go with because it accounts for more
//:: of the total damage than the acid does.
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION);
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
effect eStun = EffectStunned();
effect eVisAcid = EffectVisualEffect(VFX_IMP_ACID_S);
effect eVisElec = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
effect eVisStun = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eStun, eVisStun);
eLink = EffectLinkEffects(eLink, eDur);
float fDelay;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Storm of Vengeance' will not work underwater!", oPC);
return;
}
int CasterLvl = PRCGetCasterLevel(GetAreaOfEffectCreator());
int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator(),CasterLvl);
//Get first target in spell area
object oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE);
while(GetIsObjectValid(oTarget))
{
int nDamage = d6(6);
nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 6);
effect eElec = PRCEffectDamage(oTarget, nDamage, ChangedElementalDamage(GetAreaOfEffectCreator(), DAMAGE_TYPE_ELECTRICAL));
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, GetAreaOfEffectCreator()))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELL_STORM_OF_VENGEANCE));
//Make an SR Check
fDelay = PRCGetRandomDelay(0.5, 2.0);
if(PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr, fDelay) == 0)
{
int nDC = PRCGetSaveDC(oTarget,GetAreaOfEffectCreator());
int nAcid = d6(3);
nAcid += SpellDamagePerDice(GetAreaOfEffectCreator(), 3);
// Acid Sheath adds +1 damage per die to acid descriptor spells
if (GetHasDescriptor(SPELL_STORM_OF_VENGEANCE, DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, GetAreaOfEffectCreator()))
nAcid += 3;
effect eAcid = PRCEffectDamage(oTarget, nAcid, DAMAGE_TYPE_ACID);
//Make a saving throw check
// * if the saving throw is made they still suffer acid damage.
// * if they fail the saving throw, they suffer Electrical damage too
if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, (nDC), SAVING_THROW_TYPE_ELECTRICITY, GetAreaOfEffectCreator(), fDelay))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisAcid, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eAcid, oTarget));
if (d2()==1)
{
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisElec, oTarget));
}
}
else
{
//Apply the VFX impact and effects
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisAcid, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eAcid, oTarget));
//Apply the VFX impact and effects
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisElec, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eElec, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2)));
}
}
}
//Get next target in spell area
oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the integer used to hold the spells spell school
}

View File

@@ -0,0 +1,113 @@
//::///////////////////////////////////////////////
//:: Storm of Vengeance
//:: NW_S0_StormVeng.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates an AOE that decimates the enemies of
the cleric over a 30ft radius around the caster
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 8, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 25, 2001
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
location lTarget = PRCGetSpellTargetLocation();
effect eVis = EffectVisualEffect(VFX_FNF_STORM);
int nAoE = AOE_PER_STORM;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Storm of Vengeance' will not work underwater!", oPC);
return;
}
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lTarget);
//Create an instance of the AOE Object using the Apply Effect function
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectAreaOfEffect(nAoE), lTarget, RoundsToSeconds(10) + 2.1);
//Setup Area Of Effect object
object oAoE = GetAreaOfEffectObject(lTarget, "VFX_PER_STORM");
SetAllAoEInts(SPELL_STORM_OF_VENGEANCE, oAoE, PRCGetSpellSaveDC(SPELL_STORM_OF_VENGEANCE, SPELL_SCHOOL_CONJURATION), 0, PRCGetCasterLevel(oCaster));
PRCSetSchool();
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Storm of Vengeance' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,311 @@
//::///////////////////////////////////////////////
//:: Summon Creature Series
//:: NW_S0_Summon
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Carries out the summoning of the appropriate
creature for the Summon Monster Series of spells
1 to 9
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 8, 2002
//:://////////////////////////////////////////////
#include "prc_inc_spells"
void main()
{
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
int bAnimalDomain;
int nMetaMagic = PRCGetMetaMagicFeat();
int nSwitch = GetPRCSwitch(PRC_SUMMON_ROUND_PER_LEVEL);
float fDuration = nSwitch == 0 ? HoursToSeconds(24) :
RoundsToSeconds(PRCGetCasterLevel(oCaster) * nSwitch);
if(nMetaMagic & METAMAGIC_EXTEND)
fDuration *= 2;
if (GetPRCSwitch(PRC_BIOWARE_ANIMAL_DOMAIN_POWER))
bAnimalDomain = GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER, oCaster);
string sSummon;
int nVFX;
if (nInt == 1)
{
switch(GetSpellId())
{
case SPELL_SUMMON_CREATURE_I:
sSummon = bAnimalDomain ? "marinebeetle2" : "marinebeetle1";
nVFX = VFX_FNF_SUMMON_MONSTER_1;
break;
case SPELL_SUMMON_CREATURE_II:
sSummon = bAnimalDomain ? "marinebeetle" : "marinebeetle2";
nVFX = VFX_FNF_SUMMON_MONSTER_1;
break;
case SPELL_SUMMON_CREATURE_III:
if(bAnimalDomain)
{
sSummon = "giantseaspider";
nVFX = VFX_FNF_SUMMON_MONSTER_2;
}
else
{
sSummon = "marinebeetle";
nVFX = VFX_FNF_SUMMON_MONSTER_1;
}
break;
case SPELL_SUMMON_CREATURE_IV:
sSummon = bAnimalDomain ? "giantcrab" : "giantseaspider";
nVFX = VFX_FNF_SUMMON_MONSTER_2;
break;
case SPELL_SUMMON_CREATURE_V:
sSummon = bAnimalDomain ? "giantcrab" : "giantcrab";
nVFX = VFX_FNF_SUMMON_MONSTER_2;
break;
case SPELL_SUMMON_CREATURE_VI:
if(bAnimalDomain)
{
nVFX = VFX_FNF_SUMMON_MONSTER_3;
int nRoll = d4();
sSummon = nRoll == 1 ? "waterhuge" :
nRoll == 2 ? "waterhuge" :
nRoll == 3 ? "waterhuge" :
"waterhuge";
}
else
{
sSummon = "waterhuge";
nVFX = VFX_FNF_SUMMON_MONSTER_2;
}
break;
case SPELL_SUMMON_CREATURE_VII_AIR:
sSummon = bAnimalDomain ? "watergreat" : "waterhuge";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VII_EARTH:
sSummon = bAnimalDomain ? "watergreat" : "waterhuge";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VII_FIRE:
sSummon = bAnimalDomain ? "watergreat" : "waterhuge";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VII_WATER:
sSummon = bAnimalDomain ? "watergreat" : "waterhuge";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VIII_AIR:
sSummon = bAnimalDomain ? "waterelder" : "watergreat";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VIII_EARTH:
sSummon = bAnimalDomain ? "waterelder" : "watergreat";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VIII_FIRE:
sSummon = bAnimalDomain ? "waterelder" : "watergreat";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VIII_WATER:
sSummon = bAnimalDomain ? "waterelder" : "watergreat";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_IX_AIR:
sSummon = "waterelder";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_IX_EARTH:
sSummon = "waterelder";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_IX_FIRE:
sSummon = "waterelder";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_IX_WATER:
sSummon = "waterelder";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VII:
{
nVFX = VFX_FNF_SUMMON_MONSTER_3;
int nRoll = d4();
sSummon = nRoll == 1 ? "waterhuge" :
nRoll == 2 ? "waterhuge" :
nRoll == 3 ? "waterhuge" :
"waterhuge";
}
break;
case SPELL_SUMMON_CREATURE_VIII:
{
nVFX = VFX_FNF_SUMMON_MONSTER_3;
int nRoll = d4();
sSummon = nRoll == 1 ? "watergreat" :
nRoll == 2 ? "watergreat" :
nRoll == 3 ? "watergreat" :
"watergreat";
}
break;
case SPELL_SUMMON_CREATURE_IX:
{
nVFX = VFX_FNF_SUMMON_MONSTER_3;
int nRoll = d4();
sSummon = nRoll == 1 ? "waterelder" :
nRoll == 2 ? "waterelder" :
nRoll == 3 ? "waterelder" :
"waterelder";
}
break;
}
}
else
{
switch(GetSpellId())
{
case SPELL_SUMMON_CREATURE_I:
sSummon = bAnimalDomain ? "boardire" : "badgerdire";
nVFX = VFX_FNF_SUMMON_MONSTER_1;
break;
case SPELL_SUMMON_CREATURE_II:
sSummon = bAnimalDomain ? "wolfdire" : "boardire";
nVFX = VFX_FNF_SUMMON_MONSTER_1;
break;
case SPELL_SUMMON_CREATURE_III:
if(bAnimalDomain)
{
sSummon = "spiddire";
nVFX = VFX_FNF_SUMMON_MONSTER_2;
}
else
{
sSummon = "wolfdire";
nVFX = VFX_FNF_SUMMON_MONSTER_1;
}
break;
case SPELL_SUMMON_CREATURE_IV:
sSummon = bAnimalDomain ? "beardire" : "spiddire";
nVFX = VFX_FNF_SUMMON_MONSTER_2;
break;
case SPELL_SUMMON_CREATURE_V:
sSummon = bAnimalDomain ? "diretiger" : "beardire";
nVFX = VFX_FNF_SUMMON_MONSTER_2;
break;
case SPELL_SUMMON_CREATURE_VI:
if(bAnimalDomain)
{
nVFX = VFX_FNF_SUMMON_MONSTER_3;
int nRoll = d4();
sSummon = nRoll == 1 ? "airhuge" :
nRoll == 2 ? "earthhuge" :
nRoll == 3 ? "firehuge" :
"waterhuge";
}
else
{
sSummon = "diretiger";
nVFX = VFX_FNF_SUMMON_MONSTER_2;
}
break;
case SPELL_SUMMON_CREATURE_VII_AIR:
sSummon = bAnimalDomain ? "airgreat" : "airhuge";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VII_EARTH:
sSummon = bAnimalDomain ? "earthgreat" : "earthhuge";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VII_FIRE:
sSummon = bAnimalDomain ? "firegreat" : "firehuge";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VII_WATER:
sSummon = bAnimalDomain ? "watergreat" : "waterhuge";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VIII_AIR:
sSummon = bAnimalDomain ? "airelder" : "airgreat";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VIII_EARTH:
sSummon = bAnimalDomain ? "earthelder" : "earthgreat";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VIII_FIRE:
sSummon = bAnimalDomain ? "fireelder" : "firegreat";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VIII_WATER:
sSummon = bAnimalDomain ? "waterelder" : "watergreat";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_IX_AIR:
sSummon = "airelder";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_IX_EARTH:
sSummon = "earthelder";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_IX_FIRE:
sSummon = "fireelder";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_IX_WATER:
sSummon = "waterelder";
nVFX = VFX_FNF_SUMMON_MONSTER_3;
break;
case SPELL_SUMMON_CREATURE_VII:
{
nVFX = VFX_FNF_SUMMON_MONSTER_3;
int nRoll = d4();
sSummon = nRoll == 1 ? "airhuge" :
nRoll == 2 ? "earthhuge" :
nRoll == 3 ? "firehuge" :
"waterhuge";
}
break;
case SPELL_SUMMON_CREATURE_VIII:
{
nVFX = VFX_FNF_SUMMON_MONSTER_3;
int nRoll = d4();
sSummon = nRoll == 1 ? "airgreat" :
nRoll == 2 ? "earthgreat" :
nRoll == 3 ? "firegreat" :
"watergreat";
}
break;
case SPELL_SUMMON_CREATURE_IX:
{
nVFX = VFX_FNF_SUMMON_MONSTER_3;
int nRoll = d4();
sSummon = nRoll == 1 ? "airelder" :
nRoll == 2 ? "earthelder" :
nRoll == 3 ? "fireelder" :
"waterelder";
}
break;
}
}
if (GetHasFeat(FEAT_SUMMON_ALIEN, oCaster) || GetHasSpellEffect(VESTIGE_ZCERYLL, oCaster)) sSummon = "pseudo"+sSummon;
else sSummon = "nw_s_"+sSummon;
if (DEBUG) DoDebug("nw_s0_summon: oCaster " +GetName(oCaster)+", GetSpellId " +IntToString(GetSpellId())+", sSummon " +sSummon);
effect eSummon = EffectSummonCreature(sSummon, nVFX);
//Apply the VFX impact and summon effect
MultisummonPreSummon();
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, PRCGetSpellTargetLocation(), fDuration);
DelayCommand(0.5, AugmentSummonedCreature(sSummon));
PRCSetSchool();
}

View File

@@ -0,0 +1,160 @@
//::///////////////////////////////////////////////
//:: Sunbeam
//:: s_Sunbeam.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
//:: All creatures in the beam are struck blind and suffer 4d6 points of damage. (A successful
//:: Reflex save negates the blindness and reduces the damage by half.) Creatures to whom sunlight
//:: is harmful or unnatural suffer double damage.
//::
//:: Undead creatures caught within the ray are dealt 1d6 points of damage per caster level
//:: (maximum 20d6), or half damage if a Reflex save is successful. In addition, the ray results in
//:: the total destruction of undead creatures specifically affected by sunlight if they fail their saves.
//:://////////////////////////////////////////////
//:: Created By: Keith Soleski
//:: Created On: Feb 22, 2001
//:://////////////////////////////////////////////
//:: Last Modified By: Keith Soleski, On: March 21, 2001
//:: VFX Pass By: Preston W, On: June 25, 2001
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Sunbeam' will not work underwater!", oPC);
return;
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nMetaMagic = PRCGetMetaMagicFeat();
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
effect eStrike = EffectVisualEffect(VFX_FNF_SUNBEAM);
effect eDam;
effect eBlind = EffectBlindness();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eBlind, eDur);
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nDamage;
int nOrgDam;
int nMax;
float fDelay;
int nBlindLength = 3;
int nPenetr = CasterLvl + SPGetPenetr();
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, PRCGetSpellTargetLocation());
//Get the first target in the spell area
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, PRCGetSpellTargetLocation());
while(GetIsObjectValid(oTarget))
{
int nCasterLevel= CasterLvl;
//Limit caster level
if (nCasterLevel > 20)
{
nCasterLevel = 20;
}
// Make a faction check
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
fDelay = PRCGetRandomDelay(1.0, 2.0);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SUNBEAM));
//Make an SR check
if ( ! PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr, 1.0))
{
//Check if the target is an undead
if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
{
//Roll damage and save
nDamage = d6(nCasterLevel);
nMax = 6;
}
else
{
//Roll damage and save
nDamage = d6(3);
nOrgDam = nDamage;
nMax = 6;
nCasterLevel = 3;
//Get the adjusted damage due to Reflex Save, Evasion or Improved Evasion
}
//Do metamagic checks
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = nMax * nCasterLevel;
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2);
}
nDamage += SpellDamagePerDice(OBJECT_SELF, nCasterLevel);
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
//Check that a reflex save was made.
if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, (nDC), SAVING_THROW_TYPE_DIVINE, OBJECT_SELF, 1.0) == 0)
{
DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nBlindLength),TRUE,-1,CasterLvl));
}
else
{
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, 0, SAVING_THROW_TYPE_DIVINE);
}
//Set damage effect
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE);
if(nDamage > 0)
{
//Apply the damage effect and VFX impact
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
PRCBonusDamage(oTarget);
}
}
}
//Get the next target in the spell area
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, PRCGetSpellTargetLocation());
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the integer used to hold the spells spell school
}

View File

@@ -0,0 +1,173 @@
//::///////////////////////////////////////////////
//:: Wail of the Banshee
//:: NW_S0_WailBansh
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
You emit a terrible scream that kills enemy creatures who hear it
The spell affects up to one creature per caster level. Creatures
closest to the point of origin are affected first.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Dec 12, 2000
//:://////////////////////////////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001
//:: VFX Pass By: Preston W, On: June 25, 2001
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF);
int nToAffect = nCasterLevel;
object oTarget;
float fTargetDistance;
float fDelay;
location lTarget;
effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
effect eWail = EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES);
int nCnt = 1;
nCasterLevel +=SPGetPenetr();
//Apply the FNF VFX impact
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eWail, PRCGetSpellTargetLocation());
//Get the closet target from the spell target location
oTarget = PRCGetSpellTargetObject(); // direct target
if (!GetIsObjectValid(oTarget) || GetObjectType(oTarget) != OBJECT_TYPE_CREATURE)
oTarget = GetNearestObjectToLocation(OBJECT_TYPE_CREATURE, PRCGetSpellTargetLocation(), nCnt);
while (nCnt < nToAffect)
{
lTarget = GetLocation(oTarget);
//Get the distance of the target from the center of the effect
fDelay = PRCGetRandomDelay(3.0, 4.0);//
fTargetDistance = GetDistanceBetweenLocations(PRCGetSpellTargetLocation(), lTarget);
//Check that the current target is valid and closer than 10.0m
if(GetIsObjectValid(oTarget) && fTargetDistance <= 10.0)
{
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WAIL_OF_THE_BANSHEE));
//Make SR check
if(!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterLevel)) //, 0.1))
{
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
//Make a fortitude save to avoid death
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (nDC), SAVING_THROW_TYPE_DEATH)) //, OBJECT_SELF, 3.0))
{
DeathlessFrenzyCheck(oTarget);
//Apply the delay VFX impact and death effect
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
effect eDeath = EffectDeath();
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); // no delay
}
}
}
}
else
{
//Kick out of the loop
nCnt = nToAffect;
}
//Increment the count of creatures targeted
nCnt++;
//Get the next closest target in the spell target location.
oTarget = GetNearestObjectToLocation(OBJECT_TYPE_CREATURE, PRCGetSpellTargetLocation(), nCnt);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the integer used to hold the spells spell school
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Wail of the Banshee' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,63 @@
//::///////////////////////////////////////////////
//:: Wall of Fire
//:: NW_S0_WallFire.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Creates a wall of fire that burns any creature
entering the area around the wall. Those moving
through the AOE are burned for 4d6 fire damage
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: July 17, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare Area of Effect object using the appropriate constant
effect eAOE = EffectAreaOfEffect(AOE_PER_WALLFIRE);
//Get the location where the wall is to be placed.
location lTarget = PRCGetSpellTargetLocation();
int CasterLvl = PRCGetCasterLevel();
int nDuration = CasterLvl / 2;
if(nDuration == 0)
{
nDuration = 1;
}
int nMetaMagic = PRCGetMetaMagicFeat();
//Check fort metamagic
if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND))
{
nDuration = nDuration *2; //Duration is +100%
}
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Wall of Fire' will not work underwater!", oPC);
return;
}
//Create the Area of Effect Object declared above.
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(nDuration));
object oAoE = GetAreaOfEffectObject(lTarget, "VFX_PER_WALLFIRE");
SetAllAoEInts(SPELL_WALL_OF_FIRE, oAoE, PRCGetSpellSaveDC(SPELL_WALL_OF_FIRE, SPELL_SCHOOL_EVOCATION), 0, CasterLvl);
SetLocalInt(oAoE, "Wall_Fire_Damage", ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE));
PRCSetSchool();
}

View File

@@ -0,0 +1,83 @@
//::///////////////////////////////////////////////
//:: Wall of Fire: On Enter
//:: NW_S0_WallFireA.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Person within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
effect eDam;
object oTarget;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Wall of Fire' will not work underwater!", oPC);
return;
}
//Capture the first target object in the shape.
oTarget = GetEnteringObject();
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WALL_OF_FIRE));
//Make SR check, and appropriate saving throw(s).
if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr))
{
//Roll damage.
nDamage = d6(4);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 24;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 4);
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (PRCGetSaveDC(oTarget,GetAreaOfEffectCreator())), SAVING_THROW_TYPE_FIRE);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
eDam = PRCEffectDamage(oTarget, nDamage, GetLocalInt(OBJECT_SELF, "Wall_Fire_Damage"));
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
PRCBonusDamage(oTarget);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the integer used to hold the spells spell school
}

View File

@@ -0,0 +1,111 @@
//::///////////////////////////////////////////////
//:: Wall of Fire: Heartbeat
//:: NW_S0_WallFireA.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Person within the AoE take 4d6 fire damage
per round.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 17, 2001
//:://////////////////////////////////////////////
//:: modified by mr_bumpkin Dec 4, 2003
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
effect eDam;
object oTarget;
//Declare and assign personal impact visual effect.
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Wall of Fire' will not work underwater!", oPC);
return;
}
//Capture the first target object in the shape.
//--------------------------------------------------------------------------
// GZ 2003-Oct-15
// When the caster is no longer there, all functions calling
// GetAreaOfEffectCreator will fail. Its better to remove the barrier then
//--------------------------------------------------------------------------
if (!GetIsObjectValid(GetAreaOfEffectCreator()))
{
DestroyObject(OBJECT_SELF);
return;
}
int CasterLvl = PRCGetCasterLevel(GetAreaOfEffectCreator());
int nPenetr = SPGetPenetrAOE(GetAreaOfEffectCreator(),CasterLvl);
int EleDmg = GetLocalInt(OBJECT_SELF, "Wall_Fire_Damage");
oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Declare the spell shape, size and the location.
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WALL_OF_FIRE));
//Make SR check, and appropriate saving throw(s).
if(!PRCDoResistSpell(GetAreaOfEffectCreator(), oTarget,nPenetr))
{
//Roll damage.
nDamage = d6(4);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 24;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
}
nDamage += SpellDamagePerDice(GetAreaOfEffectCreator(), 4);
int nDC = PRCGetSaveDC(oTarget,GetAreaOfEffectCreator());
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, (nDC), SAVING_THROW_TYPE_FIRE);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
eDam = PRCEffectDamage(oTarget, nDamage, EleDmg);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
PRCBonusDamage(oTarget);
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 1.0,FALSE);
}
}
}
//Select the next target within the spell shape.
oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the integer used to hold the spells spell school
}

View File

@@ -0,0 +1,192 @@
//::///////////////////////////////////////////////
//:: Bombardment
//:: X0_S0_Bombard
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Rocks fall from sky
// 1d8 damage/level to a max of 10d8
// Reflex save for half
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 22 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 01, 2003
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
object oCaster = OBJECT_SELF;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Bombardment' will not work underwater!", oPC);
return;
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nCasterLvl = CasterLvl;
CasterLvl +=SPGetPenetr();
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_METEOR_SWARM);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = PRCGetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 20)
{
nCasterLvl = 20;
}
//Apply the fireball explosion at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) == TRUE)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,CasterLvl, fDelay))
{
int nSpellDC = (PRCGetSaveDC(oTarget,OBJECT_SELF)) ;
//Roll damage for each target
nDamage = d8(nCasterLvl);
//Resolve metamagic
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDamage = 8 * nCasterLvl;
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDamage = nDamage + nDamage / 2;
}
nDamage += SpellDamagePerDice(oCaster, nCasterLvl);
//nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE);
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSpellDC, SAVING_THROW_TYPE_ALL);
//Set the damage effect
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_BLUDGEONING);
if(nDamage > 0)
{
// Apply effects to the currently selected target.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Erasing the variable used to store the spell's spell school
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Bombardment' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,201 @@
//::///////////////////////////////////////////////
//:: Earthquake
//:: X0_S0_Earthquake
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Ground shakes. 1d6 damage, max 10d6
// LOCKINDAL: Changed to alternate: DC 15 or knock down, 25% creatures must make DC 20 or die.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 22 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 01, 2003
//:: Altered By: Lockindal
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
#include "prc_inc_spells"
#include "prc_alterations"
#include "prc_add_spell_dc"
void DoQuake(object oCaster, int nCasterLvl, location lTarget)
{
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
//Declare major variables
int nSpectacularDeath = TRUE;
int nDisplayFeedback = TRUE;
int bInside = GetIsAreaInterior(GetArea(oCaster));
int nProneDC = 15;
int nDamageDC = 15;
int nFissureDC = 20;
int nDamage;
float fDelay;
float fSize = FeetToMeters(80.0f);
float fProneDur = 18.0;
effect eExplode = EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM);
effect eExplode2 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_NATURE);
effect eExplode3 = EffectVisualEffect(VFX_IMP_DUST_EXPLOSION);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE2);
effect eKnockdown = EffectKnockdown();
// Perform screen shake
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oCaster);
//Apply epicenter explosion on caster
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, GetLocation(oCaster));
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode2, GetLocation(oCaster));
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode3, GetLocation(oCaster));
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fSize, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while(GetIsObjectValid(oTarget))
{
// Normal targeting restriction, except also skip affecting the caster
if(oTarget != oCaster && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
{
// Let the target's AI know
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_EARTHQUAKE));
// First, always knock targets prone, DC 15 to avoid
if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nProneDC, SAVING_THROW_TYPE_SPELL, oCaster))
{
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnockdown, oTarget, fProneDur, FALSE, SPELL_EARTHQUAKE, nCasterLvl, oCaster);
}
// Indoors, get hit by falling rubble for 8d6, reflex half
if(bInside)
{
nDamage = SpellDamagePerDice(oCaster, 8) + d6(8);
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDamageDC, SAVING_THROW_TYPE_SPELL, oCaster);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_ENERGY),
oTarget, 0.0f, FALSE, SPELL_EARTHQUAKE, nCasterLvl, oCaster);
}
// Outdoors, 25% chance to fall into a fissure and die
else
{
if(d4() == 4)
{
if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nFissureDC, SAVING_THROW_TYPE_SPELL, oCaster))
{
DeathlessFrenzyCheck(oTarget);
/// @todo Find appropriate VFX to play here
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(nSpectacularDeath, nDisplayFeedback),
oTarget, 0.0f, FALSE, SPELL_EARTHQUAKE, nCasterLvl, oCaster);
}
}
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, fSize, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
PRCSetSchool();
}
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
location lTarget = PRCGetSpellTargetLocation();
int nCasterLvl = PRCGetCasterLevel(oCaster);
int nMetaMagic = PRCGetMetaMagicFeat();
// Perform the earthquake
DoQuake(oCaster, nCasterLvl, lTarget);
// Extended earthquake - apply the effects again next round
if(nMetaMagic & METAMAGIC_EXTEND)
DelayCommand(6.0f, DoQuake(oCaster, nCasterLvl, lTarget));
// Erasing the variable used to store the spell's spell school
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Earthquake' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,239 @@
//::///////////////////////////////////////////////
//:: Firebrand
//:: x0_x0_Firebrand
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// * Fires a flame arrow to every target in a
// * colossal area
// * Each target explodes into a small fireball for
// * 1d6 damage / level (max = 15 levels)
// * Only nLevel targets can be affected
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 29 2002
//:://////////////////////////////////////////////
//:: Last Updated By:
//
// Altered to give targets reflex saves per pnp.
//
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void DoFirebrand(int CasterLvl,int nD6Dice, int nCap, int nSpell,
int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE,
int nDAMAGETYPE = DAMAGE_TYPE_MAGICAL, int nONEHIT = FALSE);
void main()
{
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Firebrand' will not work underwater!", oPC);
return;
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nDamage = CasterLvl;
if (nDamage > 15)
nDamage = 15;
// Changed to local function to add reflex save.
DoFirebrand(CasterLvl,nDamage, 15, SPELL_FIREBRAND, VFX_IMP_MIRV_FLAME, VFX_IMP_FLAME_M, ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE), FALSE);
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Erasing the variable used to store the spell's spell school
}
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 31, 2002
//:://////////////////////////////////////////////
//:: Modified March 14 2003: Removed the option to hurt chests/doors
//:: was potentially causing bugs when no creature targets available.
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 31, 2002
//:://////////////////////////////////////////////
//:: Modified March 14 2003: Removed the option to hurt chests/doors
//:: was potentially causing bugs when no creature targets available.
void DoFirebrand(int CasterLvl,int nD6Dice, int nCap, int nSpell, int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE, int nDAMAGETYPE = DAMAGE_TYPE_MAGICAL, int nONEHIT = FALSE)
{
object oTarget = OBJECT_INVALID;
int nDamage = 0;
int nMetaMagic = PRCGetMetaMagicFeat();
int nCnt = 1;
effect eMissile = EffectVisualEffect(nMIRV);
effect eVis = EffectVisualEffect(nVIS);
float fDist = 0.0;
float fDelay = 0.0;
float fDelay2, fTime;
location lTarget = PRCGetSpellTargetLocation(); // missile spread centered around caster
int nMissiles = CasterLvl;
if (nMissiles > nCap)
{
nMissiles = nCap;
}
/* New Algorithm
1. Count # of targets
2. Determine number of missiles
3. First target gets a missile and all Excess missiles
4. Rest of targets (max nMissiles) get one missile
*/
int nEnemies = 0;
int nCasterlvl = CasterLvl +SPGetPenetr();
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget) )
{
// * caster cannot be harmed by this spell
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && (oTarget != OBJECT_SELF))
{
// GZ: You can only fire missiles on visible targets
if (GetObjectSeen(oTarget,OBJECT_SELF))
{
nEnemies++;
}
}
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
if (nEnemies == 0) return; // * Exit if no enemies to hit
int nExtraMissiles = nMissiles / nEnemies;
// April 2003
// * if more enemies than missiles, need to make sure that at least
// * one missile will hit each of the enemies
if (nExtraMissiles <= 0)
{
nExtraMissiles = 1;
}
// by default the Remainder will be 0 (if more than enough enemies for all the missiles)
int nRemainder = 0;
if (nExtraMissiles >0)
nRemainder = nMissiles % nEnemies;
if (nEnemies > nMissiles)
nEnemies = nMissiles;
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget) && nCnt <= nEnemies)
{
// * caster cannot be harmed by this spell
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF) && (oTarget != OBJECT_SELF) && (GetObjectSeen(oTarget,OBJECT_SELF)))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpell));
// * recalculate appropriate distances
fDist = GetDistanceBetween(OBJECT_SELF, oTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
// Firebrand.
// It means that once the target has taken damage this round from the
// spell it won't take subsequent damage
if (nONEHIT == TRUE)
{
nExtraMissiles = 1;
nRemainder = 0;
}
int i = 0;
//--------------------------------------------------------------
// GZ: Moved SR check out of loop to have 1 check per target
// not one check per missile, which would rip spell mantels
// apart
//--------------------------------------------------------------
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterlvl, fDelay))
{
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
for (i=1; i <= nExtraMissiles + nRemainder; i++)
{
//Roll damage
int nDam = d6(nD6Dice);
//Enter Metamagic conditions
if ((nMetaMagic & METAMAGIC_MAXIMIZE))
{
nDam = nD6Dice*6;//Damage is at max
}
if ((nMetaMagic & METAMAGIC_EMPOWER))
{
nDam = nDam + nDam/2; //Damage/Healing is +50%
}
nDam += SpellDamagePerDice(OBJECT_SELF, nD6Dice);
if(i == 1) //nDam += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF);
fTime = fDelay;
fDelay2 += 0.1;
fTime += fDelay2;
// Adjust damage for reflex save / evasion / imp evasion
nDam = PRCGetReflexAdjustedDamage(nDam, oTarget,
nDC, SAVING_THROW_TYPE_FIRE);
// Always apply missle but only apply impact/damage if we really have damage.
DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
if (nDam > 0)
{
//Set damage effect
effect eDam = PRCEffectDamage(oTarget, nDam, nDAMAGETYPE);
//Apply the MIRV and damage effect
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0f,TRUE,-1,CasterLvl));
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
}
}
} // for
else
{ // * apply a dummy visual effect
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget);
}
nCnt++;// * increment count of missiles fired
nRemainder = 0;
}
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
}

View File

@@ -0,0 +1,158 @@
//::///////////////////////////////////////////////
//:: Gust of Wind
//:: [x0_s0_gustwind.nss]
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
This spell creates a gust of wind in all directions
around the target. All targets in a medium area will be
affected:
- Target must make a For save vs. spell DC or be
knocked down for 3 rounds
- plays a wind sound
- if an area of effect object is within the area
it is dispelled
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: September 7, 2002
//:://////////////////////////////////////////////
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
string sAOETag;
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nCasterLvl = CasterLvl;
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20);
effect eVis = EffectVisualEffect(VFX_IMP_PULSE_WIND);
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Gust of Wind' will not work underwater!", oPC);
return;
}
nCasterLvl += SPGetPenetr();
// effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = PRCGetSpellTargetLocation();
//Apply the fireball explosion at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE | OBJECT_TYPE_AREA_OF_EFFECT);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (GetObjectType(oTarget) == OBJECT_TYPE_AREA_OF_EFFECT)
{
// 1.69 change
// Gust of wind should only destroy "cloud/fog like" area of effect spells.
sAOETag = GetTag(oTarget);
if ( sAOETag == "VFX_PER_FOGACID" ||
sAOETag == "VFX_PER_FOGKILL" ||
sAOETag == "VFX_PER_FOGBEWILDERMENT" ||
sAOETag == "VFX_PER_FOGSTINK" ||
sAOETag == "VFX_PER_FOGFIRE" ||
sAOETag == "VFX_PER_FOGMIND" ||
sAOETag == "VFX_PER_CREEPING_DOOM")
{
DestroyObject(oTarget);
}
}
else
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
{
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, PRCGetSpellId()));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
// * unlocked doors will reverse their open state
if (GetObjectType(oTarget) == OBJECT_TYPE_DOOR)
{
if (GetLocked(oTarget) == FALSE)
{
if (GetIsOpen(oTarget) == FALSE)
{
AssignCommand(oTarget, ActionOpenDoor(oTarget));
}
else
AssignCommand(oTarget, ActionCloseDoor(oTarget));
}
}
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
if(!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterLvl)
&& !/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (nDC)))
{
effect eKnockdown = EffectKnockdown();
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnockdown, oTarget, RoundsToSeconds(3),TRUE,-1,CasterLvl);
// Apply effects to the currently selected target.
// DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE |OBJECT_TYPE_AREA_OF_EFFECT);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Erasing the variable used to store the spell's spell school
}

View File

@@ -0,0 +1,155 @@
//::///////////////////////////////////////////////
//:: Inferno
//:: x0_s0_inferno.nss
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
/*
Does 2d6 fire per round
Duration: 1 round per level
*/
//:://////////////////////////////////////////////
//:: Created By: Aidan Scanlan
//:: Created On: 01/09/01
//:://////////////////////////////////////////////
//:: Rewritten: Georg Zoeller, 2003-Oct-19
//:: - VFX update
//:: - Spell no longer stacks with itself
//:: - Spell can now be dispelled
//:: - Spell is now much less cpu expensive
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
#include "prc_inc_spells"
#include "prc_alterations"
#include "prc_add_spell_dc"
void RunImpact(object oTarget, object oCaster, int nMetamagic,int EleDmg);
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION);
object oCaster = OBJECT_SELF;
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Inferno' will not work underwater!", oPC);
return;
}
object oTarget = PRCGetSpellTargetObject();
//--------------------------------------------------------------------------
// Spellcast Hook Code
// Added 2003-06-20 by Georg
// If you want to make changes to all spells, check x2_inc_spellhook.nss to
// find out more
//--------------------------------------------------------------------------
if (!X2PreSpellCastCode())
{
return;
}
// End of Spell Cast Hook
//--------------------------------------------------------------------------
// This spell no longer stacks. If there is one of that type, thats ok
//--------------------------------------------------------------------------
if (GetHasSpellEffect(GetSpellId(),oTarget) || GetHasSpellEffect(SPELL_COMBUST,oTarget))
{
FloatingTextStrRefOnCreature(100775,OBJECT_SELF,FALSE);
return;
}
//--------------------------------------------------------------------------
// Calculate the duration
//--------------------------------------------------------------------------
int nMetaMagic = PRCGetMetaMagicFeat();
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int EleDmg = ChangedElementalDamage(OBJECT_SELF, DAMAGE_TYPE_FIRE);
int nDuration = CasterLvl ;
int nPenetr = CasterLvl + SPGetPenetr();
if ((nMetaMagic & METAMAGIC_EXTEND))
{
nDuration = nDuration * 2;
}
if (nDuration < 1)
{
nDuration = 1;
}
//--------------------------------------------------------------------------
// Flamethrower VFX, thanks to Alex
//--------------------------------------------------------------------------
effect eRay = EffectBeam(444,OBJECT_SELF,BODY_NODE_CHEST);
effect eDur = EffectVisualEffect(498);
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
float fDelay = GetDistanceBetween(oTarget, OBJECT_SELF)/13;
if(!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr))
{
//----------------------------------------------------------------------
// Engulf the target in flame
//----------------------------------------------------------------------
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 3.0f,FALSE);
//----------------------------------------------------------------------
// Apply the VFX that is used to track the spells duration
//----------------------------------------------------------------------
DelayCommand(fDelay,SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,eDur,oTarget,RoundsToSeconds(nDuration),FALSE));
object oSelf = OBJECT_SELF; // because OBJECT_SELF is a function
DelayCommand(fDelay+0.1f,RunImpact(oTarget, oSelf,nMetaMagic,EleDmg));
}
else
{
//----------------------------------------------------------------------
// Indicate Failure
//----------------------------------------------------------------------
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 2.0f,FALSE);
effect eSmoke = EffectVisualEffect(VFX_IMP_REFLEX_SAVE_THROW_USE);
DelayCommand(fDelay+0.3f,SPApplyEffectToObject(DURATION_TYPE_INSTANT,eSmoke,oTarget));
}
}
void RunImpact(object oTarget, object oCaster, int nMetaMagic,int EleDmg)
{
//--------------------------------------------------------------------------
// Check if the spell has expired (check also removes effects)
//--------------------------------------------------------------------------
if (PRCGetDelayedSpellEffectsExpired(446,oTarget,oCaster))
{
return;
}
if (GetIsDead(oTarget) == FALSE)
{
//----------------------------------------------------------------------
// Calculate Damage
//----------------------------------------------------------------------
int nDamage = PRCMaximizeOrEmpower(6,2,nMetaMagic);
nDamage += SpellDamagePerDice(oCaster, 2);
//nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE);
effect eDam = PRCEffectDamage(oTarget, nDamage, EleDmg);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
eDam = EffectLinkEffects(eVis,eDam); // flare up
SPApplyEffectToObject (DURATION_TYPE_INSTANT,eDam,oTarget);
DelayCommand(6.0f,RunImpact(oTarget,oCaster,nMetaMagic,EleDmg));
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Erasing the variable used to store the spell's spell school
}

View File

@@ -0,0 +1,178 @@
//::///////////////////////////////////////////////
//:: Balagarn's Iron Horn
//::
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Create a virbration that shakes creatures off their feet.
// Make a strength check as if caster has strength 20
// against all enemies in area
// Changes it so its not a cone but a radius.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 22 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 01, 2003
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
#include "prc_inc_spells"
#include "prc_alterations"
#include "prc_add_spell_dc"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION);
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oPC = GetFirstPC();
object oCaster = OBJECT_SELF;
int nInt=GetLocalInt(oPC, "Underwater");
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nCasterLvl = CasterLvl;
int nPenetr = CasterLvl + SPGetPenetr();
int nMetaMagic = PRCGetMetaMagicFeat();
float fDelay;
float nSize = RADIUS_SIZE_COLOSSAL;
effect eExplode = EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_BUMP);
//Get the spell target location as opposed to the spell target.
location lTarget = PRCGetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 20)
{
nCasterLvl = 20;
}
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShake, OBJECT_SELF, RoundsToSeconds(d3()),TRUE,-1,CasterLvl);
//Apply epicenter explosion on caster
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, GetLocation(OBJECT_SELF));
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
// * spell should not affect the caster
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && (oTarget != oCaster))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 436));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr, fDelay))
{
effect eTrip = EffectKnockdown();
// * DO a strength check vs. Strength 20
if (d20() + GetAbilityScore(oTarget, ABILITY_STRENGTH) <= 20 + d20() )
{ //Apply the VFX impact and damage effect (reflected upon PC)
if (nInt == 1)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTrip, oCaster, 6.0));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oCaster));
FloatingTextStringOnCreature("The spell 'Balagarn's Iron Horn' is reflected underwater!", oPC);
}
// Apply effects to the currently selected target.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTrip, oTarget, 6.0,TRUE,-1,CasterLvl));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
else
FloatingTextStrRefOnCreature(2750, OBJECT_SELF, FALSE);
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Erasing the variable used to store the spell's spell school
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Balagarn's Iron Horn' has caused a cave-in!", oPC));
}
}

View File

@@ -0,0 +1,244 @@
//::///////////////////////////////////////////////
//:: Sunburst
//:: X0_S0_Sunburst
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
// Brilliant globe of heat
// All creatures in the globe are blinded and
// take 6d6 damage
// Undead creatures take 1d6 damage (max 25d6)
// The blindness is permanent unless cast to remove it
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: July 23 2002
//:://////////////////////////////////////////////
//:: Last Updated By: Andrew Nobbs May 14, 2003
//:: Notes: Changed damage to non-undead to 6d6
//:: 2003-10-09: GZ Added Subrace check for vampire special case, bugfix
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
#include "prc_inc_spells"
#include "prc_add_spell_dc"
float nSize = RADIUS_SIZE_COLOSSAL;
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
object oPC = GetFirstPC();
int nInt=GetLocalInt(oPC, "Underwater");
effect eFail = SupernaturalEffect(EffectSpellFailure());
object oCaster = OBJECT_SELF;
//Spell fails if caster is underwater.
if (nInt == 1)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eFail,oCaster,0.1);
FloatingTextStringOnCreature("The spell 'Sunburst' will not work underwater!", oPC);
return;
}
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nCasterLvl = CasterLvl;
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage = 0;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY);
effect eHitVis = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE);
effect eLOS = EffectVisualEffect(VFX_FNF_LOS_HOLY_30);
effect eDam;
//Get the spell target location as opposed to the spell target.
location lTarget = PRCGetSpellTargetLocation();
//Limit Caster level for the purposes of damage
if (nCasterLvl > 25)
{
nCasterLvl = 25;
}
int nPenetr = CasterLvl + SPGetPenetr();
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLOS, PRCGetSpellTargetLocation());
int bDoNotDoDamage = FALSE;
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SUNBURST));
//This visual effect is applied to the target object not the location as above. This visual effect
//represents the flame that erupts on the target not on the ground.
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHitVis, oTarget);
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr, fDelay))
{
if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
{
//Roll damage for each target
nDamage = PRCMaximizeOrEmpower(6, nCasterLvl, nMetaMagic);
nDamage += SpellDamagePerDice(oCaster, nCasterLvl);
}
else
{
nDamage = PRCMaximizeOrEmpower(6, 6, nMetaMagic);
nDamage += SpellDamagePerDice(oCaster, 6);
}
//nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE);
int nDC = PRCGetSaveDC(oTarget,OBJECT_SELF);
// * if a vampire then destroy it
if (GetAppearanceType(oTarget) == APPEARANCE_TYPE_VAMPIRE_MALE || GetAppearanceType(oTarget) == APPEARANCE_TYPE_VAMPIRE_FEMALE || GetStringLowerCase(GetSubRace(oTarget)) == "vampire" )
{
// SpeakString("I vampire");
// * if reflex saving throw fails no blindness
if (!ReflexSave(oTarget, (nDC), SAVING_THROW_TYPE_SPELL))
{
effect eDead = PRCEffectDamage(oTarget, GetCurrentHitPoints(oTarget));
//SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oTarget);
//Apply epicenter explosion on caster
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eExplode, oTarget);
DelayCommand(0.5, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDead, oTarget));
bDoNotDoDamage = TRUE;
}
}
if (bDoNotDoDamage == FALSE)
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF), SAVING_THROW_TYPE_SPELL);
// * Do damage
if ((nDamage > 0) && (bDoNotDoDamage == FALSE))
{
//Set the damage effect
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL);
// Apply effects to the currently selected target.
DelayCommand(0.01, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
PRCBonusDamage(oTarget);
// * if reflex saving throw fails apply blindness
if (!ReflexSave(oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF), SAVING_THROW_TYPE_SPELL))
{
effect eBlindness = EffectBlindness();
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eBlindness, oTarget,0.0f,TRUE,-1,CasterLvl);
}
} // nDamage > 0
}
//-----------------------------------------------------------------
// GZ: Bugfix, reenable damage for next object
//-----------------------------------------------------------------
bDoNotDoDamage = FALSE;
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, nSize, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Erasing the variable used to store the spell's spell school
//Set up variables for cave-in
object oHench1 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1);
object oHench2 = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 2);
object oFamiliar0 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC, 1);
object oFamiliar1 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench1, 1);
object oFamiliar2 = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHench2, 1);
object oSummoned0 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, 1);
object oSummoned1 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench1, 1);
object oSummoned2 = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oHench2, 1);
object oAnimal0 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC, 1);
object oAnimal1 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench1, 1);
object oAnimal2 = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oHench2, 1);
object oDominated0 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, 1);
object oDominated1 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench1, 1);
object oDominated2 = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oHench2, 1);
int nDL=GetLocalInt(oPC, "nDungeonLevel");
if (nDL == 1)
{
int nDam1 = d10();
int nDam2 = d10();
int nDamage = (nDam1 + nDam2);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShake, GetLocation(oPC));
PlaySound("as_na_rockfallg1");
//Apply Cave-in Visual Effect
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oDominated2));
//Apply Cave-in Damage
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oHench2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oFamiliar2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oSummoned2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAnimal2));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated0));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated1));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oDominated2));
//Send Message to PC
DelayCommand(3.0, FloatingTextStringOnCreature("The spell 'Sunburst' has caused a cave-in!", oPC));
}
}

Some files were not shown because too many files have changed in this diff Show More