Horsefly Swamp update

Creatures & encounter tables to support Horsefly swamp expansion.
This commit is contained in:
Jaysyn904
2023-08-13 17:21:44 -04:00
parent e4a37cd868
commit df709d33fc
485 changed files with 257810 additions and 10741 deletions

View File

@@ -905,18 +905,18 @@
901 "Bat: Medium 250" **** BASE c_a_bat2_50 **** R S **** 1 1 1 VFAST 2.75 5.5 0.2 0.2 1 0.2 1.7 H 1 2 1 1 po_Bat 1 9 9 5 1 60 30 Bat_head 0 1
902 "Bat: Large 375" **** BASE c_a_bat3_75 **** R S **** 1 1 1 VFAST 2.75 5.5 0.2 0.2 1 0.2 1.7 H 1 2 1 1 po_Bat 1 9 9 5 1 60 30 Bat_head 0 1
903 "Bat: Huge 500" **** BASE c_a_bat5 **** R S **** 1 1 1 VFAST 2.75 5.5 0.2 0.2 1 0.2 1.7 H 1 2 1 1 po_Bat 1 9 9 5 1 60 30 Bat_head 0 1
904 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
905 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
906 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
907 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
908 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
909 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
910 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
911 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
912 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
913 "Wererat: Berserker" **** Wererat_berserker qc_wererat_berz default R FT **** 1 1 1 FAST 1.75 2.33 0.5 0.8 1 0.5 1.9 H 1 22 1 1 po_Wererat 3 9 3 2 1 60 30 head_g 0 1
914 Werepanther **** WerePanther qc_werepanther default R FT 1.3 1 1 1 FAST 2.7 5.5 0.3 1 1 0.3 1.8 H 1 14 1 1 po_GnollWiz 3 9 0 0 1 60 30 head_g 6 1
915 "Werewolf: Noble Alpha" **** Werewolf_Alpha qc_werewolf_A default R FT 1.3 1 1 1 VFAST 2.9 5.7 0.4 1.1 2.25 0.3 1.8 H 1 14 1 1 po_GnollWiz 3 9 0 0 1 60 30 head_g 6 1
904 "Swarm, Insects / 05 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_insect **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
905 "Swarm, Insects / 10 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_insect2 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
906 "Swarm, Insects / 15 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_insect3 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
907 "Swarm, Brown Flies / 05 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flybr1 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
908 "Swarm, Brown Flies / 10 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flybr2 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
909 "Swarm, Brown Flies / 15 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flybr3 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
910 "Swarm, Red Flies / 05 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flyrd1 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
911 "Swarm, Red Flies / 10 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flyrd2 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
912 "Swarm, Red Flies / 15 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flyrd3 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
913 "Swarm, Green Flies / 05 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flygr1 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
914 "Swarm, Green Flies / 10 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flygr2 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
915 "Swarm, Green Flies / 15 Bugs / Tiny [Acidchalk]" **** Swarm c_swarm_flygr3 **** G S 1 1 1 1 NORM 1 2 0.3 0.4 1 1 1.2 H 0 24 0 0 po_bugs 1 9 9 26 1 60 30 **** 0 1
916 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
917 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
918 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -6322,7 +6322,7 @@
6318 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6319 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6320 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6321 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6321 "Dog: Undead: Wolf: Dire* (PLUSH HYENA of DOOM)" **** Wolf_Dog c_phod_unwolf **** R S **** 1 1 1 FAST 1.8 3.6 0.6 1.1 1 1.1 2.7 H 0 23 1 1 po_Wolf 4 9 3 2 1 60 30 Wolf_head 0 1
6322 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6323 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6324 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -6336,14 +6336,14 @@
6332 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6333 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6334 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6335 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6336 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6335 "Deer: Undead* (PLUSH HYENA of DOOM)" **** Deer c_phod_undeer **** R S **** 1 1 1 FAST 1.82 2.4 0.6 0.9 1 0.9 2.6 H 0 23 1 1 po_Deer 3 9 4 2 1 60 30 Deer_head 0 1
6336 "Goat: Undead, Humongous* (PLUSH HYENA of DOOM)" **** Goat C_phod_ungoat **** R S **** 1 1 1 NORM 1.82 2.4 0.6 0.9 1 0.9 2.6 H 0 23 1 1 po_Deer 3 9 4 2 1 60 30 Deer_head 0 1
6337 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6338 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6339 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6338 "Badger of Doom: Undead* (PLUSH HYENA of DOOM)" **** Badger c_phod_unbgr1 **** R S **** 1 1 1 FAST 1 1.42 0.5 0.5 1 0.5 2.6 L 0 23 1 1 po_DireBadger 2 9 3 2 1 60 30 Badger_head 0 1
6339 "Badger: Undead* (PLUSH HYENA of DOOM)" **** Badger c_phod_unbgr2 **** R S **** 1 1 1 FAST 0.77 1.2 0.3 0.3 1 0.3 2 L 0 23 1 1 po_DireBadger 1 9 3 2 1 60 30 Badger_head 0 1
6340 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6341 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6342 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6342 "Boar: Undead* (PLUSH HYENA of DOOM)" **** Boar c_phod_unboar **** R S **** 1 1 1 FAST 1.46 2.1 0.6 0.6 1 0.6 2.2 L 0 23 1 1 po_DireBoar 3 9 0 2 1 60 30 Wildboar_head 0 1
6343 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6344 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6345 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -6353,8 +6353,8 @@
6349 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6350 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6351 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6352 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6353 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6352 "Bear (Rubbish): Undead* (PLUSH HYENA of DOOM)" **** Bear c_phod_unbea1 **** R S **** 1 1 1 FAST 1.46 1.94 0.6 1.5 1 1.5 2.2 H 1 23 1 1 po_BearDire 4 9 3 2 1 60 30 Bear_head 0 1
6353 "Bear (Sumo): Undead* (PLUSH HYENA of DOOM)" **** Bear c_phod_unbea2 **** R S **** 1 1 1 NORM 1.75 2.33 0.8 1.7 1 1.5 1.7 H 1 23 1 1 po_BearDire 4 9 3 2 1 60 30 Bear_head 0 1
6354 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6355 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6356 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@@ -6404,7 +6404,7 @@
6400 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6401 Dracolisk **** Dracolisk c_dracolisk **** G S **** 1 1 1 FAST 2.05 2.7 1.1 4.8 1 2.4 4.8 L 0 20 1 1 po_DrgBlack 3 9 3 2 1 60 30 Wolf_head 0 1
6402 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6403 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6403 "Alligator* (Project Q)" **** crocodile qc_alligator **** R S **** 1 1 1 FAST 1.82 2.4 0.6 0.9 1 0.9 2.6 H 0 2 1 1 po_crocgator 3 9 4 2 1 60 30 Deer_head 0 1
6404 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6405 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
6406 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

Binary file not shown.

View File

@@ -0,0 +1,257 @@
/*
nw_s0_remeffect
Takes the place of
Remove Disease
Neutralize Poison
Remove Paralysis
Remove Curse
Remove Blindness / Deafness
Lesser Restoration
Restoration
Greater Restoration
Panacea
By: Preston Watamaniuk
Created: Jan 8, 2002
Modified: Jun 16, 2006
Flaming_Sword: Added Restoration spells, cleaned up
added panacea, attack roll before SR check
*/
const int SAVING_THROW_NONE = 4;
#include "inc_dispel"
#include "prc_sp_func"
#include "prc_inc_sp_tch"
#include "prc_add_spell_dc"
int GetIsSupernaturalCurse(effect eEff)
{
return GetTag(GetEffectCreator(eEff)) == "q6e_ShaorisFellTemple";
}
// * generic area of effect constructor
void PRCGenericAreaOfEffect(
object oCaster, location lTargetLoc,
int nShape, float fRadiusSize, int nSpellID,
effect eImpact, effect eLink, effect eVis,
int nDurationType=DURATION_TYPE_INSTANT, float fDuration = 0.0,
int nTargetType=SPELL_TARGET_ALLALLIES, int bHarmful = FALSE,
int nRemoveEffectSpell=FALSE, int nRemoveEffect1=0, int nRemoveEffect2=0, int nRemoveEffect3=0,
int bLineOfSight=FALSE, int nObjectFilter=OBJECT_TYPE_CREATURE,
int bPersistentObject=FALSE, int bResistCheck=FALSE, int nSavingThrowType=SAVING_THROW_NONE,
int nSavingThrowSubType=SAVING_THROW_TYPE_ALL
)
{
//Apply Impact
if (GetEffectType(eImpact) != 0)
{
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, lTargetLoc);
}
object oTarget = OBJECT_INVALID;
float fDelay = 0.0;
int nPenetr = PRCGetCasterLevel(oCaster);
//Get the first target in the radius around the caster
if (bPersistentObject == TRUE)
oTarget = GetFirstInPersistentObject();
else
oTarget = GetFirstObjectInShape(nShape, fRadiusSize, lTargetLoc, bLineOfSight, nObjectFilter);
while(GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, nTargetType, oCaster) == TRUE)
{
//Fire spell cast at event for target
SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID, bHarmful));
int nResistSpellSuccess = FALSE;
// * actually perform the resist check
if (bResistCheck == TRUE)
{
nResistSpellSuccess = PRCDoResistSpell(oCaster, oTarget,nPenetr);
}
if(!nResistSpellSuccess)
{
int nDC = PRCGetSaveDC(oTarget, oCaster);
int nSavingThrowSuccess = FALSE;
// * actually roll saving throw if told to
if (nSavingThrowType != SAVING_THROW_NONE)
{
nSavingThrowSuccess = PRCMySavingThrow(nSavingThrowType, oTarget, nDC, nSavingThrowSubType);
}
if (!nSavingThrowSuccess)
{
fDelay = PRCGetRandomDelay(0.4, 1.1);
//Apply VFX impact
if (GetEffectType(eVis) != 0)
{
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
// * Apply effects
// if (GetEffectType(eLink) != 0)
// * Had to remove this test because LINKED effects have no valid type.
{
DelayCommand(fDelay, ApplyEffectToObject(nDurationType, eLink, oTarget, fDuration));
}
// * If this is a removal spell then perform the appropriate removals
if (nRemoveEffectSpell == TRUE)
{
//Remove effects
PRCRemoveSpecificEffect(nRemoveEffect1, oTarget);
if(nRemoveEffect2 != 0)
{
PRCRemoveSpecificEffect(nRemoveEffect2, oTarget);
}
if(nRemoveEffect3 != 0)
{
PRCRemoveSpecificEffect(nRemoveEffect3, oTarget);
}
}
}// saving throw
} // resist spell check
}
//Get the next target in the specified area around the caster
if (bPersistentObject == TRUE)
oTarget = GetNextInPersistentObject();
else
oTarget = GetNextObjectInShape(nShape, fRadiusSize, lTargetLoc, bLineOfSight, nObjectFilter);
}
}
//Implements the spell impact, put code here
// if called in many places, return TRUE if
// stored charges should be decreased
// eg. touch attack hits
//
// Variables passed may be changed if necessary
int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent)
{
int nSpellID = PRCGetSpellId();
SpellRemovalCheck(oCaster, oTarget);
int nVis;
int iAttackRoll = TRUE;
switch(nSpellID)
{ //Setting visual effect
case SPELL_GREATER_RESTORATION: nVis = VFX_IMP_RESTORATION_GREATER; break;
case SPELL_RESTORATION: nVis = VFX_IMP_RESTORATION; break;
case SPELL_LESSER_RESTORATION: nVis = VFX_IMP_RESTORATION_LESSER; break;
default: nVis = VFX_IMP_REMOVE_CONDITION; break;
}
if(nSpellID == SPELL_REMOVE_BLINDNESS_AND_DEAFNESS)
{ //Remove Blindness and Deafness aoe hack largely untouched
effect eLink;
PRCGenericAreaOfEffect(OBJECT_SELF, PRCGetSpellTargetLocation(), SHAPE_SPHERE, RADIUS_SIZE_MEDIUM,
SPELL_REMOVE_BLINDNESS_AND_DEAFNESS, EffectVisualEffect(VFX_FNF_LOS_HOLY_30), eLink, EffectVisualEffect(nVis),
DURATION_TYPE_INSTANT, 0.0,
SPELL_TARGET_ALLALLIES, FALSE, TRUE, EFFECT_TYPE_BLINDNESS, EFFECT_TYPE_DEAF);
return TRUE;
}
effect eEffect = GetFirstEffect(oTarget);
if(!((nSpellID == SPELL_PANACEA) && (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)))
{
while(GetIsEffectValid(eEffect))
{ //Effect removal - see prc_sp_func for list of effects removed
if(CheckRemoveEffects(nSpellID, GetEffectType(eEffect)) && !GetIsSupernaturalCurse(eEffect) && (GetEffectSubType(eEffect) != SUBTYPE_EXTRAORDINARY) && !GetShouldNotBeRemoved(eEffect))
RemoveEffect(oTarget, eEffect);
eEffect = GetNextEffect(oTarget);
}
}
if(nSpellID == SPELL_GREATER_RESTORATION && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD
&& !(GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD))
{ //Greater Restoration healing
int nHeal = 10 * nCasterLevel;
if(nHeal > 250 && !GetPRCSwitch(PRC_BIOWARE_GRRESTORE))
nHeal = 250;
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectHeal(nHeal, oTarget), oTarget);
SetLocalInt(oTarget, "WasRestored", TRUE);
DelayCommand(HoursToSeconds(1), DeleteLocalInt(oTarget, "WasRestored"));
}
if(nSpellID == SPELL_PANACEA)
{
int nAdd = (nCasterLevel > 20) ? 20 : nCasterLevel;
if((MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD || (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD))
&& (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)))
{
PRCSignalSpellEvent(oTarget);
if (!PRCDoResistSpell(oCaster, oTarget, nCasterLevel + SPGetPenetr()))
{
iAttackRoll = PRCDoMeleeTouchAttack(oTarget);
if (iAttackRoll)
{
// Roll the damage (allowing for a critical) and let the target make a will save to
// halve the damage.
int nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_POSITIVE, 1 == iAttackRoll ? 1 : 2, 8, 0, nAdd);
if (PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget,OBJECT_SELF)))
{
nDamage /= 2;
if (GetHasMettle(oTarget, SAVING_THROW_WILL)) nDamage = 0;
}
// Apply damage and VFX.
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_POSITIVE), oTarget);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SUNSTRIKE), oTarget);
}
}
}
else
{
// Roll the healing 'damage'.
int nHeal = PRCGetMetaMagicDamage(DAMAGE_TYPE_POSITIVE, 1, 8, 0, nAdd);
// Apply the healing and VFX.
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectHeal(nHeal, oTarget), oTarget);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_M), oTarget);
}
}
SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID, FALSE));
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nVis), oTarget);
return iAttackRoll; //return TRUE if spell charges should be decremented
}
void main()
{
object oCaster = OBJECT_SELF;
int bValid = FALSE;
int nCasterLevel = PRCGetCasterLevel(oCaster);
PRCSetSchool(GetSpellSchool(PRCGetSpellId()));
if (!X2PreSpellCastCode()) return;
object oTarget = PRCGetSpellTargetObject();
int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags
if(!nEvent) //normal cast
{
if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget)
{ //holding the charge, casting spell on self
SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges
return;
}
DoSpell(oCaster, oTarget, nCasterLevel, nEvent);
}
else
{
if(nEvent & PRC_SPELL_EVENT_ATTACK)
{
if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent))
DecrementSpellCharges(oCaster);
}
}
if ( GetLocalInt(oTarget,"hunefer_rot") )
{
SendMessageToPC(oTarget,"Recovered from Hunefer Rot");
SetLocalInt(oTarget,"hunefer_rot",0);
bValid = TRUE;
}
PRCSetSchool();
}

View File

@@ -5,45 +5,69 @@
//:://////////////////////////////////////////////
/*
Creature must make a ranged touch attack to hit
the intended target. Reflex or Will save is
needed to halve damage or avoid effect.
the intended target.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 11 , 2001
//:: Updated On: July 15, 2003 Georg Zoeller - Removed saving throws
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "prc_inc_spells"
//#include "wm_include"
void main()
{
//if (WildMagicOverride()) { return; }
//if (WildMagicOverride()) { return; }
//:: Declare major variables
object oNPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nHD = GetHitDice(oNPC);
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eBolt = EffectNegativeLevel(1);
int bSpecial = GetLocalInt(OBJECT_SELF,"SPECIAL_DRAIN_BOLT");
if ( bSpecial )
eBolt = EffectNegativeLevel(4);
int nDC = 10 +nCHAMod+ (nHD/2);
int nCount = nHD/5;
if (nCount == 0) { nCount = 1; }
int nDamage = d6(nCount);
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eBolt = EffectNegativeLevel(1);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_LEVEL_DRAIN));
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_LEVEL_DRAIN));
//Make a saving throw check
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
int nResult = TouchAttackRanged(oTarget);
if (nResult)
{
//eBolt = LEVEL DRAIN EFFECT
eBolt = SupernaturalEffect(eBolt);
//Apply the VFX impact and effects
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}
if ( bSpecial )
{
int nHeal = 40;
if ( nResult == 2 && !GetIsImmune(oTarget,IMMUNITY_TYPE_CRITICAL_HIT) && bSpecial )
{
eBolt = EffectNegativeLevel(8);
nHeal *= 2;
}
effect eHeal = EffectHeal(nHeal);
effect eHealVis = EffectVisualEffect(VFX_IMP_HEALING_L);
if ( !GetIsImmune(oTarget,IMMUNITY_TYPE_NEGATIVE_LEVEL) )
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,eHeal,OBJECT_SELF);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eHealVis,OBJECT_SELF);
}
}
//Make a saving throw check
if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget))
{
//eBolt = LEVEL DRAIN EFFECT
eBolt = SupernaturalEffect(eBolt);
//Apply the VFX impact and effects
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,135 @@
//::///////////////////////////////////////////////
//:: Dragon Breath Cold
//:: NW_S1_DragCold
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Calculates the proper damage and DC Save for the
breath weapon based on the HD of the dragon.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 9, 2001
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "prc_inc_spells"
void main()
{
//Declare major variables
int nAge = GetHitDice(OBJECT_SELF);
int nDamage, nDC, nDamStrike;
float fDelay;
object oTarget;
effect eVis, eBreath;
//Use the HD of the creature to determine damage and save DC
if (nAge <= 6) //Wyrmling
{
nDamage = d6(1);
nDC = 12;
}
else if (nAge >= 7 && nAge <= 9) //Very Young
{
nDamage = d6(2);
nDC = 14;
}
else if (nAge >= 10 && nAge <= 12) //Young
{
nDamage = d6(3);
nDC = 16;
}
else if (nAge >= 13 && nAge <= 15) //Juvenile
{
nDamage = d6(4);
nDC = 18;
}
else if (nAge >= 16 && nAge <= 18) //Young Adult
{
nDamage = d6(5);
nDC = 20;
}
else if (nAge >= 19 && nAge <= 21) //Adult
{
nDamage = d6(6);
nDC = 23;
}
else if (nAge >= 22 && nAge <= 24) //Mature Adult
{
nDamage = d6(7);
nDC = 25;
}
else if (nAge >= 25 && nAge <= 27) //Old
{
nDamage = d6(8);
nDC = 27;
}
else if (nAge >= 28 && nAge <= 30) //Very Old
{
nDamage = d6(9);
nDC = 29;
}
else if (nAge >= 31 && nAge <= 33) //Ancient
{
nDamage = d6(10);
nDC = 31;
}
else if (nAge >= 34 && nAge <= 37) //Wyrm
{
nDamage = d6(11);
nDC = 33;
}
else if (nAge > 37) //Great Wyrm
{
nDamage = d6(12);
nDC = 36;
}
if ( GetLocalInt(OBJECT_SELF,"CUSTOM_COLD_BREATH") )
{
nDamage = d6(12);
nDC = 10 + nAge / 2 + GetAbilityModifier(ABILITY_CONSTITUTION);
}
PlayDragonBattleCry();
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, PRCGetSpellTargetLocation(), TRUE);
while(GetIsObjectValid(oTarget))
{
if(oTarget != OBJECT_SELF && !GetIsReactionTypeFriendly(oTarget))
{
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
//Reset the damage to full
nDamStrike = nDamage;
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_COLD));
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_COLD, OBJECT_SELF, fDelay))
{
nDamStrike = nDamStrike/2;
if(GetHasFeat(FEAT_EVASION, oTarget) || GetHasFeat(FEAT_IMPROVED_EVASION, oTarget))
{
nDamStrike = 0;
}
}
else if(GetHasFeat(FEAT_IMPROVED_EVASION, oTarget))
{
nDamStrike = nDamStrike/2;
}
if (nDamStrike > 0)
{
//Set Damage and VFX
eBreath = EffectDamage(nDamStrike, DAMAGE_TYPE_COLD);
eVis = EffectVisualEffect(VFX_IMP_FROST_S);
//Determine effect delay
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreath, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE);
}
}

View File

@@ -11,48 +11,42 @@
//:: Created By: Preston Watamaniuk
//:: Created On: May 14, 2000
//:://////////////////////////////////////////////
//#include "wm_include"
#include "NW_I0_SPELLS"
#include "prc_inc_spells"
#include "NW_I0_SPELLS"
void main()
{
//if (WildMagicOverride()) { return; }
//:: Declare major variables
object oNPC = OBJECT_SELF;
object oTarget;
int nHD = GetHitDice(oNPC);
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
int nDC = 10 +nCHAMod+ (nHD/4);
int nDuration = 1 + (nHD/4);
float fDelay;
//Declare major variables
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
effect eHowl = EffectStunned();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND);
effect eVis = EffectVisualEffect(VFX_IMP_STUN);
effect eHowl = EffectStunned();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND);
effect eLink = EffectLinkEffects(eHowl, eDur);
eLink = EffectLinkEffects(eLink, eDur2);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC);
effect eLink = EffectLinkEffects(eHowl, eDur);
eLink = EffectLinkEffects(eLink, eDur2);
int nHD = GetHitDice(OBJECT_SELF);
int nDC = 10 + (nHD/4);
int nDuration = 1 + (nHD/4);
if ( GetLocalInt(OBJECT_SELF,"SPECIAL_STUNNING_ROAR") )
{
nDC = 10 + nHD / 2 + GetAbilityModifier(ABILITY_CONSTITUTION);
nDuration = d4();
}
float fDelay;
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
while(GetIsObjectValid(oTarget))
{
if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC)
if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != OBJECT_SELF)
{
fDelay = GetDistanceToObject(oTarget)/10;
nDuration = GetScaledDuration(nDuration , oTarget);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_STUN));
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_HOWL_STUN));
//Make a saving throw check
if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
if(!/*Will Save*/ MySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
{
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
@@ -60,7 +54,7 @@ void main()
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC));
}
}
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
}
}

View File

@@ -3367,7 +3367,7 @@
3363 **** **** **** **** **** cep_reserv
3364 **** **** **** **** **** cep_reserv
3365 **** **** **** **** **** cep_reserv
3366 **** **** **** **** **** cep_reserv
3366 crocgator_ 4 8 **** 0 ****
3367 **** **** **** **** **** cep_reserv
3368 **** **** **** **** **** cep_reserv
3369 **** **** **** **** **** cep_reserv

View File

@@ -16404,7 +16404,7 @@
16400 **** **** ****
16401 **** **** ****
16402 **** **** ****
16403 **** **** ****
16403 "Alligator* (Project Q)" qc_alligator ****
16404 **** **** ****
16405 **** **** ****
16406 **** **** ****