Initial commit. Updated release archive.
This commit is contained in:
60
_module/nss/i420_helcat_hb.nss
Normal file
60
_module/nss/i420_helcat_hb.nss
Normal file
@@ -0,0 +1,60 @@
|
||||
// Begin preprocess Code
|
||||
#include "nw_i0_plot"
|
||||
#include "i420_helcat_inc"
|
||||
|
||||
// Find the location of self and nearest PC
|
||||
location lSelfLoc = GetLocation(OBJECT_SELF);
|
||||
object oNearestPC = GetNearestPC();
|
||||
location lNearPC = GetLocation(oNearestPC);
|
||||
// Find the distance between self and nearest PC
|
||||
float fPCDistance = GetDistanceBetween(OBJECT_SELF,oNearestPC);
|
||||
|
||||
// Begin main code
|
||||
void main()
|
||||
{
|
||||
// Check that its day or light is cast upon the creature
|
||||
if ((GetIsDay() == TRUE) ||
|
||||
(GetHasSpellEffect(SPELL_LIGHT,OBJECT_SELF) == TRUE))
|
||||
{
|
||||
// Re-apply Invisibility
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectInvisibility(INVISIBILITY_TYPE_IMPROVED),OBJECT_SELF);
|
||||
// Return Local Int IS_INVIZ to 0
|
||||
SetLocalInt(OBJECT_SELF,"IS_INVIZ",1);
|
||||
}
|
||||
// Fire only if NearestPC is within 30 meters
|
||||
if (fPCDistance <= fIncDist)
|
||||
{
|
||||
// Check that it's night or if effected by magic darkness
|
||||
if ((GetIsNight() == TRUE) ||
|
||||
(GetHasSpellEffect(SPELL_DARKNESS,OBJECT_SELF) == TRUE))
|
||||
{
|
||||
RemoveEffect(OBJECT_SELF,EffectInvisibility(INVISIBILITY_TYPE_IMPROVED));
|
||||
}
|
||||
}
|
||||
|
||||
// Get the Nearest PC
|
||||
object oNearestPC = GetNearestPC();
|
||||
// Perform a melee touch attack
|
||||
int iTA = TouchAttackMelee(oNearestPC,FALSE);
|
||||
// Get the distance between the creature and the pc
|
||||
float fDBetween = GetDistanceBetween(OBJECT_SELF,oNearestPC);
|
||||
// Check if the melee touch attack hit, if the pc is valid, and within 3 meters
|
||||
if ((iTA > 0) && (oNearestPC != OBJECT_INVALID) && (fDBetween <= 3.0))
|
||||
{
|
||||
// Get the name of the grappling creature, display a message, grapple, and rake the PC
|
||||
string sCName = GetName(OBJECT_SELF);
|
||||
// Decrease the PC's movement for 1d4+4 seconds (Grappled)
|
||||
int id4 = d4(1)+4;
|
||||
float fd4 = IntToFloat(id4);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectMovementSpeedDecrease(99),oNearestPC,fd4);
|
||||
AssignCommand(oNearestPC,JumpToObject(OBJECT_SELF));
|
||||
PlayAnimation(ANIMATION_FIREFORGET_TAUNT,1.25,2.0);
|
||||
SendMessageToPC(oNearestPC,"The "+sCName+" grapples with its bite and rakes you with its claws.");
|
||||
// Apply Bite damage to PC
|
||||
int iBiteDmg = d6(2)+3;
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iBiteDmg,DAMAGE_TYPE_PIERCING,DAMAGE_POWER_NORMAL),oNearestPC);
|
||||
// Rake the PC with 2d4+12 slashing
|
||||
int iRakeDmg = d4(2)+12;
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iRakeDmg,DAMAGE_TYPE_SLASHING,DAMAGE_POWER_NORMAL),oNearestPC);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user