Harpy Lair Fixes

Harpy lair now works per pnp.  Created pnp harpy & dire lion.  Added many skinmesh creature models by Ancarion.  Added ProjectQ harpy model.  Added reduced sized spells.2da to override default PRC.
This commit is contained in:
Jaysyn904
2022-01-15 01:08:25 -05:00
parent 11f2dde88a
commit 059f766332
121 changed files with 777305 additions and 6030 deletions

View File

@@ -0,0 +1,15 @@
/* Script generated by
Lilac Soul's NWN Script Generator, v. 2.3
For download info, please visit:
http://nwvault.ign.com/View.php?view=Other.Detail&id=4683&id=625 */
int StartingConditional()
{
object oPC = GetPCSpeaker();
if (!GetIsSkillSuccessful(oPC, 37, 12)) return FALSE; // 37 = Climb
return TRUE;
}

View File

@@ -0,0 +1,8 @@
int StartingConditional()
{
object oPC = GetPCSpeaker();
if (GetLocalInt(oPC, "GotHarpyGems") <= 0) return FALSE; // PC has Harpy Gems
return TRUE;
}

View File

@@ -0,0 +1,20 @@
void main()
{
object oPC = GetPCSpeaker();
SetLocalInt(oPC, "GotHarpyGems", 1);
CreateItemOnObject("nw_it_gem011", oPC);
CreateItemOnObject("x0_it_msmlmisc03", oPC);
CreateItemOnObject("it_gem015", oPC);
CreateItemOnObject("bloodstone", oPC);
CreateItemOnObject("amber", oPC);
CreateItemOnObject("jet", oPC);
}

View File

@@ -0,0 +1,8 @@
int StartingConditional()
{
object oPC = GetPCSpeaker();
if (GetLocalInt(oPC, "GotHarpyGems") != 0) return FALSE;
return TRUE;
}

View File

@@ -0,0 +1,35 @@
void main()
{
object oPC = GetPCSpeaker();
effect eEffect;
int iFall = d6(1);
eEffect = EffectDamage(iFall, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);
object oTarget;
oTarget = oPC;
//Visual effects can't be applied to waypoints, so if it is a WP
//the VFX will be applied to the WP's location instead
int nInt;
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DUST_EXPLOSION), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DUST_EXPLOSION), GetLocation(oTarget));
FloatingTextStringOnCreature("You fell out of the tree!!", oPC);
eEffect = EffectKnockdown();
eEffect = ExtraordinaryEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 3.0f);
}

View File

@@ -0,0 +1,8 @@
int StartingConditional()
{
object oPC = GetPCSpeaker();
if (GetLocalInt(oPC, "GotHarpyGems") >= 1) return FALSE; // PC has no Harpy Gems
return TRUE;
}

View File

@@ -0,0 +1,5 @@
void main()
{
object oUser = GetLastUsedBy();
AssignCommand(OBJECT_SELF, ActionStartConversation(oUser));
}

View File

@@ -0,0 +1,9 @@
int StartingConditional()
{
object oPC = GetPCSpeaker();
if (!GetIsSkillSuccessful(oPC, 37, 12)) return FALSE; // 37 = Climb
return TRUE;
}

View File

@@ -0,0 +1,19 @@
///////////////////////////////////////////////////////////////////////////////
//::
//:: sklchk_search20.nss
//::
//:: 20 DC Search check for conversations
//::
//::
//::
///////////////////////////////////////////////////////////////////////////////
int StartingConditional()
{
object oPC = GetPCSpeaker();
if (!GetIsSkillSuccessful(oPC, SKILL_SEARCH, 20)) return FALSE;
return TRUE;
}

View File

@@ -38,6 +38,23 @@ void main()
}
//
// Script 99
if (nDeactivateScript == 99)
{
// Create Examinable Object
CreateObject(OBJECT_TYPE_PLACEABLE, "EXAM_DEAD_TREE", GetLocation(GetWaypointByTag("RA_DIRELION001")), FALSE);
// Spawn 2 Harpies
CreateObject(OBJECT_TYPE_CREATURE, "RA_HARPY001", GetLocation(OBJECT_SELF), TRUE);
CreateObject(OBJECT_TYPE_CREATURE, "RA_HARPY001", GetLocation(OBJECT_SELF), TRUE);
AssignCommand(GetObjectByTag("RA_HARPY001"), ActionSpeakString("Thanks for taking care of those kitties for us! Won't you join us for dinner?!?"));
// Destroy Examinable Object after 5 minutes
object oTarget;
oTarget = GetObjectByTag("EXAM_DEAD_TREE");
DelayCommand(300.0, DestroyObject(oTarget, 0.0));
}
//
// -------------------------------------------
// Only Make Modifications Between These Lines