Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
92
trunk/spells/nw_s0_evardsc.nss
Normal file
92
trunk/spells/nw_s0_evardsc.nss
Normal file
@@ -0,0 +1,92 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Evards Black Tentacles: Heartbeat
|
||||
//:: NW_S0_EvardsC
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
This spell conjures a field of rubbery black tentacles, each 10 feet long.
|
||||
These waving members seem to spring forth from the earth, floor, or whatever
|
||||
surface is underfoot<6F>including water. They grasp and entwine around creatures
|
||||
that enter the area, holding them fast and crushing them with great strength.
|
||||
Every creature within the area of the spell must make a grapple check, opposed
|
||||
by the grapple check of the tentacles. Treat the tentacles attacking a particular
|
||||
target as a Large creature with a base attack bonus equal to your caster level
|
||||
and a Strength score of 19. Thus, its grapple check modifier is equal to your
|
||||
caster level +8. The tentacles are immune to all types of damage.
|
||||
Once the tentacles grapple an opponent, they may make a grapple check each round
|
||||
on your turn to deal 1d6+4 points of bludgeoning damage. The tentacles continue
|
||||
to crush the opponent until the spell ends or the opponent escapes.
|
||||
Any creature that enters the area of the spell is immediately attacked by the
|
||||
tentacles. Even creatures who aren<65>t grappling with the tentacles may move
|
||||
through the area at only half normal speed.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Preston Watamaniuk
|
||||
//:: Created On: Nov 23, 2001
|
||||
//:://////////////////////////////////////////////
|
||||
//:: GZ: Removed SR, its not there by the book
|
||||
//:: Primogenitor: Implemented 3.5ed rules
|
||||
#include "prc_inc_combmove"
|
||||
|
||||
void DecrementTentacleCount(object oTarget, string sVar)
|
||||
{
|
||||
SetLocalInt(oTarget, sVar, GetLocalInt(oTarget, sVar) - 1);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION);
|
||||
|
||||
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||
int nCasterLevel = GetLocalInt(OBJECT_SELF, "X2_AoE_Caster_Level");
|
||||
object oTarget = GetFirstInPersistentObject();
|
||||
while(GetIsObjectValid(oTarget))
|
||||
{
|
||||
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE , GetAreaOfEffectCreator())
|
||||
&& GetCreatureFlag(oTarget, CREATURE_VAR_IS_INCORPOREAL) != TRUE)
|
||||
{
|
||||
//Fire cast spell at event for the target
|
||||
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(),
|
||||
SPELL_EVARDS_BLACK_TENTACLES));
|
||||
//now do grappling and stuff
|
||||
int nGrappleSucessful = FALSE;
|
||||
//this spell doesnt need to make a touch attack
|
||||
//as defined in the spell
|
||||
int nAttackerGrappleMod = nCasterLevel+4+4;
|
||||
nGrappleSucessful = _DoGrappleCheck(OBJECT_INVALID, oTarget, nAttackerGrappleMod);
|
||||
if(nGrappleSucessful)
|
||||
{
|
||||
//if already being grappled, apply damage
|
||||
if(GetLocalInt(oTarget, "GrappledBy_"+ObjectToString(OBJECT_SELF)))
|
||||
{
|
||||
//apply the damage
|
||||
int nDamage = d6();
|
||||
if(nMetaMagic & METAMAGIC_MAXIMIZE)
|
||||
nDamage = 6;
|
||||
if(nMetaMagic & METAMAGIC_EMPOWER)
|
||||
nDamage += nDamage/2;
|
||||
nDamage += 4;
|
||||
nDamage += SpellDamagePerDice(OBJECT_SELF, 1);
|
||||
effect eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_PLUS_TWO);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||
}
|
||||
//now being grappled
|
||||
AssignCommand(oTarget, ClearAllActions());
|
||||
effect eHold = EffectCutsceneImmobilize();
|
||||
effect eEntangle = EffectVisualEffect(VFX_DUR_SPELLTURNING_R);
|
||||
effect eLink = EffectLinkEffects(eHold, eEntangle);
|
||||
//eLink = EffectKnockdown();
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0);
|
||||
SetLocalInt(oTarget, "GrappledBy_"+ObjectToString(OBJECT_SELF),
|
||||
GetLocalInt(oTarget, "GrappledBy_"+ObjectToString(OBJECT_SELF))+1);
|
||||
DelayCommand(6.1, DecrementTentacleCount(oTarget, "GrappledBy_"+ObjectToString(OBJECT_SELF)));
|
||||
}
|
||||
}
|
||||
oTarget = GetNextInPersistentObject();
|
||||
}
|
||||
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
// Getting rid of the local integer storing the spellschool name
|
||||
|
||||
}
|
Reference in New Issue
Block a user