Added Dynamic Kobolds
Added Dynamic Kobolds. Fixed ghoul / wight texture. Added Jann model. Made PnP Zombie, Ghoul, Ghast, Wight & Mohrg creatures. Full Compile
This commit is contained in:
4156
_module/nss/ds_loot.nss
Normal file
4156
_module/nss/ds_loot.nss
Normal file
File diff suppressed because it is too large
Load Diff
16
_module/nss/ghast_stench.nss
Normal file
16
_module/nss/ghast_stench.nss
Normal file
@@ -0,0 +1,16 @@
|
||||
//::
|
||||
//:: Ghast_stench
|
||||
//::
|
||||
//:: A pnp version of the Ghast's sickening stench.
|
||||
//::
|
||||
//:: Modified by: DM Heatstroke 01-20-11
|
||||
//::
|
||||
|
||||
void main()
|
||||
{
|
||||
effect eAOE = EffectAreaOfEffect(AOE_MOB_TYRANT_FOG,"ghast_stench1","null","null");
|
||||
eAOE = SupernaturalEffect(eAOE);
|
||||
eAOE = ExtraordinaryEffect(eAOE);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eAOE,OBJECT_SELF,HoursToSeconds(100));
|
||||
}
|
60
_module/nss/ghast_stench1.nss
Normal file
60
_module/nss/ghast_stench1.nss
Normal file
@@ -0,0 +1,60 @@
|
||||
//::
|
||||
//:: Ghast_stench1
|
||||
//::
|
||||
//:: A pnp version of the Ghast's sickening stench.
|
||||
//:: Aura OnEnter script
|
||||
//::
|
||||
//:: Modified by: DM Heatstroke 01-20-11
|
||||
//::
|
||||
|
||||
#include "nw_i0_spells"
|
||||
#include "prc_inc_spells"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oTarget = GetEnteringObject();
|
||||
object oCaster = GetAreaOfEffectCreator();
|
||||
|
||||
int nLevel = GetHitDice(oCaster);
|
||||
int nDC = 10 + nLevel / 2 + GetAbilityModifier(ABILITY_CHARISMA,oCaster);
|
||||
|
||||
float fDuration = TurnsToSeconds(d6()+4);
|
||||
string sImmune = "GHAST_IMMUNE";
|
||||
|
||||
if ( !GetIsEnemy(oTarget,oCaster) ||
|
||||
oTarget == oCaster ||
|
||||
GetIsImmune(oTarget, IMMUNITY_TYPE_POISON) ||
|
||||
GetLocalInt(oTarget, sImmune) )
|
||||
|
||||
return;
|
||||
|
||||
//:: Setup Sickening effect
|
||||
effect eSick1 = EffectAttackDecrease(2);
|
||||
effect eSick2 = EffectDamageDecrease(2,DAMAGE_TYPE_MAGICAL);
|
||||
effect eSick3 = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2, SAVING_THROW_TYPE_ALL);
|
||||
effect eSick4 = EffectSkillDecrease(SKILL_ALL_SKILLS, 2);
|
||||
|
||||
//:: Setup visuals
|
||||
effect eImp = EffectVisualEffect(VFX_IMP_POISON_S);
|
||||
effect eVis1 = EffectVisualEffect(VFX_DUR_FLIES);
|
||||
effect eVis2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||
|
||||
//:: Setup EffectLink
|
||||
effect eSick = EffectLinkEffects(eSick1, eSick2);
|
||||
eSick = EffectLinkEffects(eSick, eSick3);
|
||||
eSick = EffectLinkEffects(eSick, eSick4);
|
||||
eSick = EffectLinkEffects(eSick, eVis1);
|
||||
eSick = EffectLinkEffects(eSick, eVis2);
|
||||
eSick = ExtraordinaryEffect(eSick);
|
||||
|
||||
if ( !PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON, oCaster) )
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eImp, oTarget);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSick, oTarget, fDuration);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetLocalInt(oTarget, sImmune, 1);
|
||||
}
|
||||
|
||||
}
|
54
_module/nss/ghoul_bite.nss
Normal file
54
_module/nss/ghoul_bite.nss
Normal file
@@ -0,0 +1,54 @@
|
||||
//::
|
||||
//:: Ghoul_touch
|
||||
//::
|
||||
//:: A pnp version of the Ghoul's diseased & paralytic bite.
|
||||
//::
|
||||
//:: Modified by: DM Heatstroke 01-19-11
|
||||
//::
|
||||
|
||||
#include "nw_i0_spells"
|
||||
#include "nw_i0_plot"
|
||||
#include "prc_inc_spells"
|
||||
|
||||
void DoGhoulBite(object oTarget, object oCaster)
|
||||
{ // Setup disease
|
||||
effect eVis1 = EffectVisualEffect(VFX_IMP_DISEASE_S);
|
||||
effect eDisease = EffectDisease(DISEASE_GHOUL_ROT);
|
||||
eDisease = ExtraordinaryEffect(eDisease);
|
||||
effect eSick = EffectLinkEffects(eDisease, eVis1);
|
||||
|
||||
// Setup paralytic touch
|
||||
effect eVis2 = EffectVisualEffect(VFX_DUR_PARALYZED);
|
||||
float fDuration = RoundsToSeconds(d4()+1);
|
||||
effect eParalyze = EffectParalyze();
|
||||
eParalyze = ExtraordinaryEffect(eParalyze);
|
||||
effect eStun = EffectLinkEffects(eParalyze, eVis2);
|
||||
|
||||
// Get oCaster's Bite DC
|
||||
int nCreCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oCaster);
|
||||
int nCreHD = GetHitDice (oCaster);
|
||||
int nBiteDC = (10 + (nCreHD/2) + nCreCHAMod);
|
||||
|
||||
// Roll a saving throw to resist the paralytic touch
|
||||
if ( !PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nBiteDC, SAVING_THROW_TYPE_NONE, oCaster) &&
|
||||
!GetHasFeat(4711, oTarget) && // PRC Elven feat
|
||||
!GetHasFeat(256, oTarget) ) // Bioware Weapon Prof: Elf
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eStun, oTarget, fDuration);
|
||||
}
|
||||
|
||||
// Roll a saving throw to resist the diseased bite
|
||||
if ( !PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nBiteDC, SAVING_THROW_TYPE_DISEASE, oCaster) )
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSick, oTarget);
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oTarget = GetSpellTargetObject();
|
||||
object oCaster = OBJECT_SELF;
|
||||
|
||||
DelayCommand(0.1,DoGhoulBite(oTarget,oCaster));
|
||||
|
||||
}
|
43
_module/nss/ghoul_claw.nss
Normal file
43
_module/nss/ghoul_claw.nss
Normal file
@@ -0,0 +1,43 @@
|
||||
//::
|
||||
//:: Ghoul_claw
|
||||
//::
|
||||
//:: A pnp version of the Ghoul's paralytic claws.
|
||||
//::
|
||||
//:: Modified by: DM Heatstroke 01-19-11
|
||||
//::
|
||||
|
||||
#include "nw_i0_spells"
|
||||
#include "nw_i0_plot"
|
||||
#include "prc_inc_spells"
|
||||
|
||||
void DoGhoulClaw(object oTarget, object oCaster)
|
||||
{ // Setup paralytic touch
|
||||
effect eVis = EffectVisualEffect(VFX_DUR_PARALYZED);
|
||||
float fDuration = RoundsToSeconds(d4()+1);
|
||||
effect eParalyze = EffectParalyze();
|
||||
eParalyze = ExtraordinaryEffect(eParalyze);
|
||||
effect eStun = EffectLinkEffects(eParalyze, eVis);
|
||||
|
||||
// Get oCaster's Bite DC
|
||||
int nCreCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oCaster);
|
||||
int nCreHD = GetHitDice (oCaster);
|
||||
int nBiteDC = (10 + (nCreHD/2) + nCreCHAMod);
|
||||
|
||||
// Roll a saving throw to resist the paralytic touch
|
||||
if ( !PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nBiteDC, SAVING_THROW_TYPE_NONE, oCaster) &&
|
||||
!GetHasFeat(4711, oTarget) && // PRC Elven feat
|
||||
!GetHasFeat(256, oTarget) ) // Bioware Weapon Prof: Elf
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eStun, oTarget, fDuration);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oTarget = GetSpellTargetObject();
|
||||
object oCaster = OBJECT_SELF;
|
||||
|
||||
DelayCommand(0.1,DoGhoulClaw(oTarget,oCaster));
|
||||
|
||||
}
|
35
_module/nss/knockdown_fix.nss
Normal file
35
_module/nss/knockdown_fix.nss
Normal file
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// NWN Dark Sun Creature Knockdown Fix
|
||||
// knockdown_fix.nss
|
||||
//
|
||||
// By: Jaysyn
|
||||
//
|
||||
|
||||
//void main(){}
|
||||
|
||||
#include "inc_item_props"
|
||||
|
||||
void KDFix(object oNPC)
|
||||
{
|
||||
//:: Declare major variables
|
||||
int iBAB = GetBaseAttackBonus(OBJECT_SELF);
|
||||
int iSTRb = GetAbilityModifier(0, OBJECT_SELF);
|
||||
int iDEXb = GetAbilityModifier(1, OBJECT_SELF);
|
||||
int iBaseDiscipline = GetSkillRank(SKILL_DISCIPLINE, OBJECT_SELF, TRUE);
|
||||
int iDiscipline;
|
||||
|
||||
effect eSkillBonus;
|
||||
effect eLink;
|
||||
|
||||
iDiscipline = d20(1) + iBAB + iDEXb + iSTRb;
|
||||
|
||||
if (iBaseDiscipline <= 0)
|
||||
{
|
||||
//:: Apply Discipline Bonus
|
||||
eSkillBonus = EffectSkillIncrease(SKILL_DISCIPLINE, iDiscipline);
|
||||
eLink = EffectLinkEffects(eLink, eSkillBonus);
|
||||
eLink = ExtraordinaryEffect(EffectLinkEffects(eSkillBonus, eLink));
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, OBJECT_SELF);
|
||||
}
|
||||
}
|
63
_module/nss/lvl_drain_onhit.nss
Normal file
63
_module/nss/lvl_drain_onhit.nss
Normal file
@@ -0,0 +1,63 @@
|
||||
//::
|
||||
//:: lvl_drain_onhit.nss
|
||||
//::
|
||||
//:: Modified by: Jaysyn 20221215
|
||||
//::
|
||||
|
||||
#include "NW_I0_GENERIC"
|
||||
#include "nw_i0_spells"
|
||||
#include "nw_i0_plot"
|
||||
#include "prc_inc_racial"
|
||||
|
||||
|
||||
void DoLevelDrain(object oTarget, object oCaster)
|
||||
{
|
||||
// Setup oCaster's healing
|
||||
effect eDrain = EffectTemporaryHitpoints(5);
|
||||
eDrain = ExtraordinaryEffect(eDrain);
|
||||
effect eVis1 = EffectVisualEffect(VFX_IMP_HEALING_L);
|
||||
|
||||
// Setup Level Drain
|
||||
effect eVis2 = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
||||
effect eNeg = EffectNegativeLevel(1);
|
||||
eNeg = SupernaturalEffect(eNeg);
|
||||
|
||||
// Drain levels from oTarget
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eNeg, oTarget, HoursToSeconds(24));
|
||||
// Apply Temp HP to oCaster
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis1, oCaster);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDrain, oCaster, HoursToSeconds(1));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
//:: Declare major variables
|
||||
object oCaster = OBJECT_SELF ; //:: Where the spell came from
|
||||
object oTarget = GetSpellTargetObject(); //:: What the spell is aimed at
|
||||
|
||||
int nRaceType = MyPRCGetRacialType(oTarget);
|
||||
int nChaMod = GetAbilityModifier(5, oCaster);
|
||||
int nMobHD = GetHitDice(oCaster);
|
||||
int nDC = 10 + (nMobHD / 2) + nChaMod;
|
||||
int nSave = FortitudeSave( oTarget, nDC );
|
||||
|
||||
//:: Check for Negative Level Immunity
|
||||
if ( GetIsImmune(oTarget, IMMUNITY_TYPE_NEGATIVE_LEVEL) )
|
||||
{
|
||||
SendMessageToPC(oTarget, "Immune to level drain.");
|
||||
return;
|
||||
}
|
||||
|
||||
//:: Saving throw
|
||||
if ( nSave )
|
||||
return;
|
||||
|
||||
//:: if you got this far, you're taking a negative level.
|
||||
|
||||
DelayCommand(0.1, DoLevelDrain(oTarget,oCaster));
|
||||
|
||||
}
|
||||
|
55
_module/nss/paralyze_onhit.nss
Normal file
55
_module/nss/paralyze_onhit.nss
Normal file
@@ -0,0 +1,55 @@
|
||||
//::
|
||||
//:: paralyze_onhit.nss
|
||||
//::
|
||||
//:: Modified by: Jaysyn 20221215
|
||||
//::
|
||||
|
||||
#include "NW_I0_GENERIC"
|
||||
#include "nw_i0_spells"
|
||||
#include "nw_i0_plot"
|
||||
#include "prc_inc_racial"
|
||||
|
||||
|
||||
void DoParalyze(object oTarget, object oCaster)
|
||||
{
|
||||
//:: Setup Paralysis
|
||||
effect eVis2 = EffectVisualEffect(VFX_IMP_NIGHTMARE_HEAD_HIT);
|
||||
effect ePara = EffectParalyze();
|
||||
ePara = SupernaturalEffect(ePara);
|
||||
|
||||
//:: Apply Paralysis
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePara, oTarget, TurnsToSeconds(d4()));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
//:: Declare major variables
|
||||
object oCaster = OBJECT_SELF ; //:: Where the spell came from
|
||||
object oTarget = GetSpellTargetObject(); //:: What the spell is aimed at
|
||||
|
||||
int nRaceType = MyPRCGetRacialType(oTarget);
|
||||
int nChaMod = GetAbilityModifier(5, oCaster);
|
||||
int nMobHD = GetHitDice(oCaster);
|
||||
int nDC = 10 + (nMobHD / 2) + nChaMod;
|
||||
int nSave = FortitudeSave( oTarget, nDC );
|
||||
|
||||
//:: Check for Paralysis Immunity
|
||||
if ( GetIsImmune(oTarget, IMMUNITY_TYPE_PARALYSIS) )
|
||||
{
|
||||
SendMessageToPC(oTarget, "Immune to paralysis.");
|
||||
return;
|
||||
}
|
||||
|
||||
//:: Saving throw
|
||||
if ( nSave )
|
||||
return;
|
||||
|
||||
//:: if you got this far, you're paralyzed.
|
||||
|
||||
DelayCommand(0.1, DoParalyze(oTarget, oCaster));
|
||||
|
||||
}
|
||||
|
@@ -511,6 +511,40 @@ void main()
|
||||
//:: Execute PRC OnSpawn script.
|
||||
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
|
||||
|
||||
//:: activate various custom auras.
|
||||
int nAtropal = GetTag(OBJECT_SELF)=="ATROPAL001" ? TRUE : FALSE;
|
||||
if(nAtropal)ExecuteScript("atropal_aura",OBJECT_SELF);
|
||||
|
||||
int nCryptChanter = GetTag(OBJECT_SELF)=="CRYPTCHANTER001" ? TRUE : FALSE;
|
||||
if(nCryptChanter)ExecuteScript("DrainingMelody",OBJECT_SELF);
|
||||
|
||||
int nNWalker = GetTag(OBJECT_SELF)=="NIGHTWALKER001" ? TRUE : FALSE;
|
||||
if(nNWalker)ExecuteScript("desecrating_aura",OBJECT_SELF);
|
||||
|
||||
int nNCrawler = GetTag(OBJECT_SELF)=="Nightcrawler" ? TRUE : FALSE;
|
||||
if(nNCrawler)ExecuteScript("desecrating_aura",OBJECT_SELF);
|
||||
|
||||
int nVoidWraith = GetTag(OBJECT_SELF)=="VOIDWRAITH001" ? TRUE : FALSE;
|
||||
if(nVoidWraith)ExecuteScript("airlessaura",OBJECT_SELF);
|
||||
|
||||
int AtropalScion = GetTag(OBJECT_SELF)=="ATROPALSCION001" ? TRUE : FALSE;
|
||||
if(AtropalScion)ExecuteScript("neaura",OBJECT_SELF);
|
||||
|
||||
int nGhast1 = GetTag(OBJECT_SELF)=="GHAST001" ? TRUE : FALSE;
|
||||
if(nGhast1)ExecuteScript("ghast_stench",OBJECT_SELF);
|
||||
|
||||
int nGhast2 = GetTag(OBJECT_SELF)=="GHAST002" ? TRUE : FALSE;
|
||||
if(nGhast2)ExecuteScript("ghast_stench",OBJECT_SELF);
|
||||
|
||||
int nGhast3 = GetTag(OBJECT_SELF)=="GHAST003" ? TRUE : FALSE;
|
||||
if(nGhast3)ExecuteScript("ghast_stench",OBJECT_SELF);
|
||||
|
||||
int nTliz = GetTag(OBJECT_SELF)=="TLIZ001" ? TRUE : FALSE;
|
||||
if(nTliz)ExecuteScript("tliz_aura",OBJECT_SELF);
|
||||
|
||||
int nDecay = GetTag(OBJECT_SELF)=="ANGELOFDECAY001" ? TRUE : FALSE;
|
||||
if(nDecay)ExecuteScript("rotura",OBJECT_SELF);
|
||||
|
||||
//:: Regeneration (not Fast Healing)
|
||||
if(sResRef == "ra_troll001" || sResRef == "TROLL_FEDORLA")
|
||||
{
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user