Further file organization
Further file organization
This commit is contained in:
65
nwn/nwnprc/trunk/racescripts/race_aranea_web.nss
Normal file
65
nwn/nwnprc/trunk/racescripts/race_aranea_web.nss
Normal file
@@ -0,0 +1,65 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: [Aranea Web]
|
||||
//:: [race_aranea_web.nss]
|
||||
//:: [Jaysyn / PRC 20220420]
|
||||
//::///////////////////////////////////////////////
|
||||
/**@file Web (Ex): In spider or hybrid form (see below), an aranea
|
||||
can throw a web up to six times per day. This is similar to an
|
||||
attack with a net but has a maximum range of 50 feet, with a
|
||||
range increment of 10 feet, and is effective against targets of
|
||||
up to Large size. The web anchors the target in place, allowing
|
||||
no movement.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#include "NW_I0_SPELLS"
|
||||
#include "x2_inc_switches"
|
||||
#include "prc_inc_nwscript"
|
||||
#include "prc_inc_combmove"
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
//:: Declare major varibles
|
||||
object oCaster = OBJECT_SELF;
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
|
||||
int nHD = GetHitDice(oCaster);
|
||||
int nCount = d6(1) + (nHD / 2);
|
||||
int TargetSize = PRCGetSizeModifier(oTarget);
|
||||
int nHumanoid = GetLocalInt(oCaster, "AraneaHumanoidForm");
|
||||
|
||||
effect eVis = EffectVisualEffect(VFX_DUR_WEB);
|
||||
effect eStick = EffectEntangle();
|
||||
effect eLink = ExtraordinaryEffect(EffectLinkEffects(eVis, eStick));
|
||||
|
||||
|
||||
//:: Sanity check
|
||||
if (nHumanoid)
|
||||
{
|
||||
SendMessageToPC(oCaster, "You can't throw webbing in humanoid form");
|
||||
IncrementRemainingFeatUses(oCaster, FEAT_ARANEA_WEB);
|
||||
return;
|
||||
}
|
||||
|
||||
//:: Only affects large or smaller targets
|
||||
if (TargetSize > 4)
|
||||
{
|
||||
FloatingTextStringOnCreature("This creature is too large to web.", oTarget);
|
||||
IncrementRemainingFeatUses(oCaster, FEAT_ARANEA_WEB);
|
||||
return;
|
||||
}
|
||||
|
||||
//:: Fire cast spell at event for the specified target
|
||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_ARANEA_WEB));
|
||||
|
||||
//:: Make a ranged touch attack
|
||||
if (PRCDoRangedTouchAttack(oTarget))
|
||||
{
|
||||
if(GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) != TRUE )
|
||||
{
|
||||
//Apply the VFX impact and effects
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount));
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user