generated from Jaysyn/ModuleTemplate
2025/12/24 Update
Hooked up new GUI module event. Updated PRC8 includes. Updated "_removed". Updated nasher.cfg
This commit is contained in:
22
nasher.cfg
22
nasher.cfg
@@ -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"
|
||||||
28
src/_removed/nw_s2_animalcom.nss
Normal file
28
src/_removed/nw_s2_animalcom.nss
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
28
src/_removed/nw_s2_familiar.nss
Normal file
28
src/_removed/nw_s2_familiar.nss
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
112
src/_removed/original spells/nw_s0_burnhand.nss
Normal file
112
src/_removed/original spells/nw_s0_burnhand.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
166
src/_removed/original spells/nw_s0_calllghtn.nss
Normal file
166
src/_removed/original spells/nw_s0_calllghtn.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
255
src/_removed/original spells/nw_s0_chlightn.nss
Normal file
255
src/_removed/original spells/nw_s0_chlightn.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
100
src/_removed/original spells/nw_s0_conecold.nss
Normal file
100
src/_removed/original spells/nw_s0_conecold.nss
Normal 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
132
src/_removed/original spells/nw_s0_delfirebal.nss
Normal file
132
src/_removed/original spells/nw_s0_delfirebal.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
70
src/_removed/original spells/nw_s0_eleswarm.nss
Normal file
70
src/_removed/original spells/nw_s0_eleswarm.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
175
src/_removed/original spells/nw_s0_fireball.nss
Normal file
175
src/_removed/original spells/nw_s0_fireball.nss
Normal 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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
174
src/_removed/original spells/nw_s0_firestrm.nss
Normal file
174
src/_removed/original spells/nw_s0_firestrm.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
111
src/_removed/original spells/nw_s0_flmarrow.nss
Normal file
111
src/_removed/original spells/nw_s0_flmarrow.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
91
src/_removed/original spells/nw_s0_flmlash.nss
Normal file
91
src/_removed/original spells/nw_s0_flmlash.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
177
src/_removed/original spells/nw_s0_flmstrike.nss
Normal file
177
src/_removed/original spells/nw_s0_flmstrike.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
171
src/_removed/original spells/nw_s0_icestorm.nss
Normal file
171
src/_removed/original spells/nw_s0_icestorm.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
131
src/_removed/original spells/nw_s0_implosion.nss
Normal file
131
src/_removed/original spells/nw_s0_implosion.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
72
src/_removed/original spells/nw_s0_inccloud.nss
Normal file
72
src/_removed/original spells/nw_s0_inccloud.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
81
src/_removed/original spells/nw_s0_incclouda.nss
Normal file
81
src/_removed/original spells/nw_s0_incclouda.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
65
src/_removed/original spells/nw_s0_inccloudb.nss
Normal file
65
src/_removed/original spells/nw_s0_inccloudb.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
93
src/_removed/original spells/nw_s0_inccloudc.nss
Normal file
93
src/_removed/original spells/nw_s0_inccloudc.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
181
src/_removed/original spells/nw_s0_lghtnbolt.nss
Normal file
181
src/_removed/original spells/nw_s0_lghtnbolt.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
167
src/_removed/original spells/nw_s0_metswarm.nss
Normal file
167
src/_removed/original spells/nw_s0_metswarm.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
213
src/_removed/original spells/nw_s0_prisspray.nss
Normal file
213
src/_removed/original spells/nw_s0_prisspray.nss
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
86
src/_removed/original spells/nw_s0_rayfrost.nss
Normal file
86
src/_removed/original spells/nw_s0_rayfrost.nss
Normal 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);
|
||||||
|
}
|
||||||
127
src/_removed/original spells/nw_s0_searlght.nss
Normal file
127
src/_removed/original spells/nw_s0_searlght.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
161
src/_removed/original spells/nw_s0_sndburst.nss
Normal file
161
src/_removed/original spells/nw_s0_sndburst.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
147
src/_removed/original spells/nw_s0_stormvenc.nss
Normal file
147
src/_removed/original spells/nw_s0_stormvenc.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
123
src/_removed/original spells/nw_s0_stormveng.nss
Normal file
123
src/_removed/original spells/nw_s0_stormveng.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
367
src/_removed/original spells/nw_s0_summon.nss
Normal file
367
src/_removed/original spells/nw_s0_summon.nss
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
64
src/_removed/original spells/nw_s0_summon1.nss
Normal file
64
src/_removed/original spells/nw_s0_summon1.nss
Normal 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));
|
||||||
|
}
|
||||||
|
|
||||||
65
src/_removed/original spells/nw_s0_summon2.nss
Normal file
65
src/_removed/original spells/nw_s0_summon2.nss
Normal 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));
|
||||||
|
}
|
||||||
|
|
||||||
63
src/_removed/original spells/nw_s0_summon3.nss
Normal file
63
src/_removed/original spells/nw_s0_summon3.nss
Normal 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));
|
||||||
|
}
|
||||||
60
src/_removed/original spells/nw_s0_summon4.nss
Normal file
60
src/_removed/original spells/nw_s0_summon4.nss
Normal 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));
|
||||||
|
}
|
||||||
|
|
||||||
61
src/_removed/original spells/nw_s0_summon5.nss
Normal file
61
src/_removed/original spells/nw_s0_summon5.nss
Normal 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));
|
||||||
|
|
||||||
|
}
|
||||||
99
src/_removed/original spells/nw_s0_summon6.nss
Normal file
99
src/_removed/original spells/nw_s0_summon6.nss
Normal 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));
|
||||||
|
}
|
||||||
148
src/_removed/original spells/nw_s0_summon7.nss
Normal file
148
src/_removed/original spells/nw_s0_summon7.nss
Normal 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));
|
||||||
|
}
|
||||||
129
src/_removed/original spells/nw_s0_summon8.nss
Normal file
129
src/_removed/original spells/nw_s0_summon8.nss
Normal 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));
|
||||||
|
}
|
||||||
89
src/_removed/original spells/nw_s0_summon9.nss
Normal file
89
src/_removed/original spells/nw_s0_summon9.nss
Normal 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));
|
||||||
|
}
|
||||||
138
src/_removed/original spells/nw_s0_sunbeam.nss
Normal file
138
src/_removed/original spells/nw_s0_sunbeam.nss
Normal 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
156
src/_removed/original spells/nw_s0_wailbansh.nss
Normal file
156
src/_removed/original spells/nw_s0_wailbansh.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
59
src/_removed/original spells/nw_s0_wallfire.nss
Normal file
59
src/_removed/original spells/nw_s0_wallfire.nss
Normal 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
73
src/_removed/original spells/nw_s0_wallfirea.nss
Normal file
73
src/_removed/original spells/nw_s0_wallfirea.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
90
src/_removed/original spells/nw_s0_wallfirec.nss
Normal file
90
src/_removed/original spells/nw_s0_wallfirec.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
177
src/_removed/original spells/x0_s0_bombard.nss
Normal file
177
src/_removed/original spells/x0_s0_bombard.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
93
src/_removed/original spells/x0_s0_drown.nss
Normal file
93
src/_removed/original spells/x0_s0_drown.nss
Normal 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);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
166
src/_removed/original spells/x0_s0_earthquake.nss
Normal file
166
src/_removed/original spells/x0_s0_earthquake.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
48
src/_removed/original spells/x0_s0_elecjolt.nss
Normal file
48
src/_removed/original spells/x0_s0_elecjolt.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
42
src/_removed/original spells/x0_s0_firebrand.nss
Normal file
42
src/_removed/original spells/x0_s0_firebrand.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
56
src/_removed/original spells/x0_s0_flare.nss
Normal file
56
src/_removed/original spells/x0_s0_flare.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
105
src/_removed/original spells/x0_s0_gustwind.nss
Normal file
105
src/_removed/original spells/x0_s0_gustwind.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
110
src/_removed/original spells/x0_s0_inferno.nss
Normal file
110
src/_removed/original spells/x0_s0_inferno.nss
Normal 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.
|
||||||
|
}
|
||||||
|
|
||||||
168
src/_removed/original spells/x0_s0_ironhorn.nss
Normal file
168
src/_removed/original spells/x0_s0_ironhorn.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
223
src/_removed/original spells/x0_s0_sunburst.nss
Normal file
223
src/_removed/original spells/x0_s0_sunburst.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
210
src/_removed/original spells/x2_s0_combust.nss
Normal file
210
src/_removed/original spells/x2_s0_combust.nss
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
153
src/_removed/original spells/x2_s0_elecloop.nss
Normal file
153
src/_removed/original spells/x2_s0_elecloop.nss
Normal 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 );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
173
src/_removed/original spells/x2_s0_grtthdclp.nss
Normal file
173
src/_removed/original spells/x2_s0_grtthdclp.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
141
src/_removed/original spells/x2_s0_hellinfern.nss
Normal file
141
src/_removed/original spells/x2_s0_hellinfern.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
157
src/_removed/original spells/x2_s0_horiboom.nss
Normal file
157
src/_removed/original spells/x2_s0_horiboom.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
112
src/_removed/original spells/x2_s0_scntsphere.nss
Normal file
112
src/_removed/original spells/x2_s0_scntsphere.nss
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
|
|||||||
@@ -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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
|
|||||||
BIN
src/hakpak/ghost_prc8_top/nss/nw_s0_burnhand.ncs
Normal file
BIN
src/hakpak/ghost_prc8_top/nss/nw_s0_burnhand.ncs
Normal file
Binary file not shown.
109
src/hakpak/ghost_prc8_top/nss/nw_s0_burnhand.nss
Normal file
109
src/hakpak/ghost_prc8_top/nss/nw_s0_burnhand.nss
Normal 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();
|
||||||
|
}
|
||||||
BIN
src/hakpak/ghost_prc8_top/nss/nw_s0_calllghtn.ncs
Normal file
BIN
src/hakpak/ghost_prc8_top/nss/nw_s0_calllghtn.ncs
Normal file
Binary file not shown.
190
src/hakpak/ghost_prc8_top/nss/nw_s0_calllghtn.nss
Normal file
190
src/hakpak/ghost_prc8_top/nss/nw_s0_calllghtn.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
src/hakpak/ghost_prc8_top/nss/nw_s0_chlightn.ncs
Normal file
BIN
src/hakpak/ghost_prc8_top/nss/nw_s0_chlightn.ncs
Normal file
Binary file not shown.
277
src/hakpak/ghost_prc8_top/nss/nw_s0_chlightn.nss
Normal file
277
src/hakpak/ghost_prc8_top/nss/nw_s0_chlightn.nss
Normal 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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
137
src/hakpak/ghost_prc8_top/nss/nw_s0_conecold.nss
Normal file
137
src/hakpak/ghost_prc8_top/nss/nw_s0_conecold.nss
Normal 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
|
||||||
|
}
|
||||||
|
|
||||||
123
src/hakpak/ghost_prc8_top/nss/nw_s0_delfirebal.nss
Normal file
123
src/hakpak/ghost_prc8_top/nss/nw_s0_delfirebal.nss
Normal 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
203
src/hakpak/ghost_prc8_top/nss/nw_s0_eleswarm.nss
Normal file
203
src/hakpak/ghost_prc8_top/nss/nw_s0_eleswarm.nss
Normal 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
|
||||||
|
}
|
||||||
|
|
||||||
168
src/hakpak/ghost_prc8_top/nss/nw_s0_fireball.nss
Normal file
168
src/hakpak/ghost_prc8_top/nss/nw_s0_fireball.nss
Normal 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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
170
src/hakpak/ghost_prc8_top/nss/nw_s0_firestrm.nss
Normal file
170
src/hakpak/ghost_prc8_top/nss/nw_s0_firestrm.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
110
src/hakpak/ghost_prc8_top/nss/nw_s0_flmarrow.nss
Normal file
110
src/hakpak/ghost_prc8_top/nss/nw_s0_flmarrow.nss
Normal 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();
|
||||||
|
}
|
||||||
114
src/hakpak/ghost_prc8_top/nss/nw_s0_flmlash.nss
Normal file
114
src/hakpak/ghost_prc8_top/nss/nw_s0_flmlash.nss
Normal 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
|
||||||
|
}
|
||||||
BIN
src/hakpak/ghost_prc8_top/nss/nw_s0_flmstrike.ncs
Normal file
BIN
src/hakpak/ghost_prc8_top/nss/nw_s0_flmstrike.ncs
Normal file
Binary file not shown.
108
src/hakpak/ghost_prc8_top/nss/nw_s0_flmstrike.nss
Normal file
108
src/hakpak/ghost_prc8_top/nss/nw_s0_flmstrike.nss
Normal 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();
|
||||||
|
}
|
||||||
198
src/hakpak/ghost_prc8_top/nss/nw_s0_icestorm.nss
Normal file
198
src/hakpak/ghost_prc8_top/nss/nw_s0_icestorm.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
152
src/hakpak/ghost_prc8_top/nss/nw_s0_implosion.nss
Normal file
152
src/hakpak/ghost_prc8_top/nss/nw_s0_implosion.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
65
src/hakpak/ghost_prc8_top/nss/nw_s0_inccloud.nss
Normal file
65
src/hakpak/ghost_prc8_top/nss/nw_s0_inccloud.nss
Normal 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();
|
||||||
|
}
|
||||||
85
src/hakpak/ghost_prc8_top/nss/nw_s0_incclouda.nss
Normal file
85
src/hakpak/ghost_prc8_top/nss/nw_s0_incclouda.nss
Normal 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
|
||||||
|
}
|
||||||
71
src/hakpak/ghost_prc8_top/nss/nw_s0_inccloudb.nss
Normal file
71
src/hakpak/ghost_prc8_top/nss/nw_s0_inccloudb.nss
Normal 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
|
||||||
|
}
|
||||||
|
|
||||||
111
src/hakpak/ghost_prc8_top/nss/nw_s0_inccloudc.nss
Normal file
111
src/hakpak/ghost_prc8_top/nss/nw_s0_inccloudc.nss
Normal 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
|
||||||
|
}
|
||||||
142
src/hakpak/ghost_prc8_top/nss/nw_s0_lghtnbolt.nss
Normal file
142
src/hakpak/ghost_prc8_top/nss/nw_s0_lghtnbolt.nss
Normal 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
|
||||||
|
}
|
||||||
|
|
||||||
123
src/hakpak/ghost_prc8_top/nss/nw_s0_metswarm.nss
Normal file
123
src/hakpak/ghost_prc8_top/nss/nw_s0_metswarm.nss
Normal 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
|
||||||
|
}
|
||||||
|
|
||||||
167
src/hakpak/ghost_prc8_top/nss/nw_s0_sndburst.nss
Normal file
167
src/hakpak/ghost_prc8_top/nss/nw_s0_sndburst.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
115
src/hakpak/ghost_prc8_top/nss/nw_s0_stormvenc.nss
Normal file
115
src/hakpak/ghost_prc8_top/nss/nw_s0_stormvenc.nss
Normal 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
|
||||||
|
}
|
||||||
113
src/hakpak/ghost_prc8_top/nss/nw_s0_stormveng.nss
Normal file
113
src/hakpak/ghost_prc8_top/nss/nw_s0_stormveng.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
311
src/hakpak/ghost_prc8_top/nss/nw_s0_summon.nss
Normal file
311
src/hakpak/ghost_prc8_top/nss/nw_s0_summon.nss
Normal 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();
|
||||||
|
}
|
||||||
160
src/hakpak/ghost_prc8_top/nss/nw_s0_sunbeam.nss
Normal file
160
src/hakpak/ghost_prc8_top/nss/nw_s0_sunbeam.nss
Normal 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
|
||||||
|
}
|
||||||
173
src/hakpak/ghost_prc8_top/nss/nw_s0_wailbansh.nss
Normal file
173
src/hakpak/ghost_prc8_top/nss/nw_s0_wailbansh.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
63
src/hakpak/ghost_prc8_top/nss/nw_s0_wallfire.nss
Normal file
63
src/hakpak/ghost_prc8_top/nss/nw_s0_wallfire.nss
Normal 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();
|
||||||
|
}
|
||||||
83
src/hakpak/ghost_prc8_top/nss/nw_s0_wallfirea.nss
Normal file
83
src/hakpak/ghost_prc8_top/nss/nw_s0_wallfirea.nss
Normal 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
|
||||||
|
}
|
||||||
111
src/hakpak/ghost_prc8_top/nss/nw_s0_wallfirec.nss
Normal file
111
src/hakpak/ghost_prc8_top/nss/nw_s0_wallfirec.nss
Normal 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
|
||||||
|
}
|
||||||
192
src/hakpak/ghost_prc8_top/nss/x0_s0_bombard.nss
Normal file
192
src/hakpak/ghost_prc8_top/nss/x0_s0_bombard.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
201
src/hakpak/ghost_prc8_top/nss/x0_s0_earthquake.nss
Normal file
201
src/hakpak/ghost_prc8_top/nss/x0_s0_earthquake.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
239
src/hakpak/ghost_prc8_top/nss/x0_s0_firebrand.nss
Normal file
239
src/hakpak/ghost_prc8_top/nss/x0_s0_firebrand.nss
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
158
src/hakpak/ghost_prc8_top/nss/x0_s0_gustwind.nss
Normal file
158
src/hakpak/ghost_prc8_top/nss/x0_s0_gustwind.nss
Normal 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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
155
src/hakpak/ghost_prc8_top/nss/x0_s0_inferno.nss
Normal file
155
src/hakpak/ghost_prc8_top/nss/x0_s0_inferno.nss
Normal 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
|
||||||
|
}
|
||||||
|
|
||||||
178
src/hakpak/ghost_prc8_top/nss/x0_s0_ironhorn.nss
Normal file
178
src/hakpak/ghost_prc8_top/nss/x0_s0_ironhorn.nss
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
244
src/hakpak/ghost_prc8_top/nss/x0_s0_sunburst.nss
Normal file
244
src/hakpak/ghost_prc8_top/nss/x0_s0_sunburst.nss
Normal 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
Reference in New Issue
Block a user