Lankhmar_PRC8/_module/nss/ent_hres_fnl.nss

102 lines
3.1 KiB
Plaintext
Raw Permalink Normal View History

2025-04-03 12:54:47 -04:00
#include "nw_i0_generic"
#include "x0_i0_partywide"
void main()
{
object oTarget;
object oSpawn;
location lTarget;
int nInt;
object oActor;
object oPC = GetEnteringObject();
// Give 10 experience (to party) to the PC.
GiveXPToAll(oPC, 10);
SetLocalString(oPC, "hstnfnl", "1");
// Have "Hresstan" perform a sequence of actions.
oActor = GetObjectByTag("Hresstan");
AssignCommand(oActor, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY1));
// Have "Hresstan" say something.
AssignCommand(GetObjectByTag("Hresstan"), SpeakString("Wensbane! Time to pay for your treachery!"));
if (!GetIsPC(oPC)) return;
int DoOnce = GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF));
if (DoOnce==TRUE) return;
SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), TRUE);
oTarget = GetWaypointByTag("WP_SPn_Wb2");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "wensbane2", lTarget);
oTarget = oSpawn;
SetIsTemporaryEnemy(oPC, oTarget);
AssignCommand(oTarget, ActionAttack(oPC));
AssignCommand(oTarget, DetermineCombatRound(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
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_MYSTICAL_EXPLOSION), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_MYSTICAL_EXPLOSION), GetLocation(oTarget)));
oTarget = GetWaypointByTag("WP_SPn_Wb2");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "undeadpitfigh2", lTarget);
oTarget = oSpawn;
SetIsTemporaryEnemy(oPC, oTarget);
AssignCommand(oTarget, ActionAttack(oPC));
AssignCommand(oTarget, DetermineCombatRound(oPC));
oTarget = GetWaypointByTag("WP_SPn_Wb2");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "undeadpitfigh2", lTarget);
oTarget = oSpawn;
SetIsTemporaryEnemy(oPC, oTarget);
AssignCommand(oTarget, ActionAttack(oPC));
AssignCommand(oTarget, DetermineCombatRound(oPC));
oTarget = GetWaypointByTag("WP_SPn_Wb2");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "undeadpitfigh2", lTarget);
oTarget = oSpawn;
SetIsTemporaryEnemy(oPC, oTarget);
AssignCommand(oTarget, ActionAttack(oPC));
AssignCommand(oTarget, DetermineCombatRound(oPC));
oTarget = GetWaypointByTag("WP_SPn_Wb2");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "undeadpitfigh2", lTarget);
oTarget = oSpawn;
SetIsTemporaryEnemy(oPC, oTarget);
AssignCommand(oTarget, ActionAttack(oPC));
AssignCommand(oTarget, DetermineCombatRound(oPC));
oTarget = GetWaypointByTag("WP_WBPt1");
lTarget = GetLocation(oTarget);
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
oTarget=GetFirstFactionMember(oPC, FALSE);
while (GetIsObjectValid(oTarget))
{
AssignCommand(oTarget, ClearAllActions());
AssignCommand(oTarget, ActionJumpToLocation(lTarget));
oTarget=GetNextFactionMember(oPC, FALSE);
}
AddJournalQuestEntry("Hresstan's Comrades", 8, oPC, TRUE, FALSE);
oTarget = GetObjectByTag("pitnote");
DestroyObject(oTarget, 0.1);
}