188 lines
8.1 KiB
Plaintext
188 lines
8.1 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Default: On Spawn In
|
|
//:: NW_C2_DEFAULT9
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Determines the course of action to be taken
|
|
after having just been spawned in
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: Oct 25, 2001
|
|
//:://////////////////////////////////////////////
|
|
#include "NW_O2_CONINCLUDE"
|
|
#include "NW_I0_GENERIC"
|
|
|
|
void main()
|
|
{
|
|
// OPTIONAL BEHAVIORS (Comment In or Out to Activate ) ****************************************************************************
|
|
//SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION);
|
|
//SetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION);
|
|
// This causes the creature to say a special greeting in their conversation file
|
|
// upon Perceiving the player. Attach the [NW_D2_GenCheck.nss] script to the desired
|
|
// greeting in order to designate it. As the creature is actually saying this to
|
|
// himself, don't attach any player responses to the greeting.
|
|
|
|
//SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET);
|
|
// This will set the listening pattern on the NPC to attack when allies call
|
|
//SetSpawnInCondition(NW_FLAG_STEALTH);
|
|
// If the NPC has stealth and they are a rogue go into stealth mode
|
|
//SetSpawnInCondition(NW_FLAG_SEARCH);
|
|
// If the NPC has Search go into Search Mode
|
|
//SetSpawnInCondition(NW_FLAG_SET_WARNINGS);
|
|
// This will set the NPC to give a warning to non-enemies before attacking
|
|
|
|
//SetSpawnInCondition(NW_FLAG_SLEEP);
|
|
//Creatures that spawn in during the night will be asleep.
|
|
//SetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING);
|
|
//SetSpawnInCondition(NW_FLAG_APPEAR_SPAWN_IN_ANIMATION);
|
|
//SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS);
|
|
//SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);
|
|
//This will play Ambient Animations until the NPC sees an enemy or is cleared.
|
|
//NOTE that these animations will play automatically for Encounter Creatures.
|
|
|
|
// NOTE: ONLY ONE OF THE FOLOOWING ESCAPE COMMANDS SHOULD EVER BE ACTIVATED AT ANY ONE TIME.
|
|
//SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN); // OPTIONAL BEHAVIOR (Flee to a way point and return a short time later.)
|
|
//SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE); // OPTIONAL BEHAVIOR (Flee to a way point and do not return.)
|
|
//SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE); // OPTIONAL BEHAVIOR (Teleport to safety and do not return.)
|
|
//SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN); // OPTIONAL BEHAVIOR (Teleport to safety and return a short time later.)
|
|
|
|
// CUSTOM USER DEFINED EVENTS
|
|
/*
|
|
The following settings will allow the user to fire one of the blank user defined events in the NW_D2_DefaultD. Like the
|
|
On Spawn In script this script is meant to be customized by the end user to allow for unique behaviors. The user defined
|
|
events user 1000 - 1010
|
|
*/
|
|
//SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1001
|
|
//SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1002
|
|
//SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1005
|
|
//SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1006
|
|
//SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1008
|
|
//SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1003
|
|
//SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1004
|
|
//SetSpawnInCondition(NW_FLAG_DEATH_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1007
|
|
|
|
int nScaleFactor = GetLocalInt(GetObjectByTag("TrashCan"), "nDifficultylevel");
|
|
int nChallengeFactor = GetLocalInt(GetObjectByTag("TrashCan"), "nChallengelevel");
|
|
location loc = GetLocation(OBJECT_SELF);
|
|
int nRandom;
|
|
|
|
nRandom = d8() + nChallengeFactor;
|
|
if(nScaleFactor > 0 && nScaleFactor < 3 && nRandom > 9)
|
|
{
|
|
string sTag = GetTag(OBJECT_SELF);
|
|
if (sTag == "ms_spawnogre9")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "ogrebeserk009", loc, TRUE);
|
|
DestroyObject(OBJECT_SELF);
|
|
}
|
|
if (sTag == "ms_spawnogre10")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "ogrebeserk010", loc, TRUE);
|
|
DestroyObject(OBJECT_SELF);
|
|
}
|
|
if (sTag == "ms_spawnogreboss9")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "ogrebeserk009", loc, TRUE);
|
|
DestroyObject(OBJECT_SELF);
|
|
}
|
|
if (sTag == "ms_spawnogreboss10")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "ogrebeserk010", loc, TRUE);
|
|
DestroyObject(OBJECT_SELF);
|
|
}
|
|
|
|
}
|
|
nRandom = d4() + nChallengeFactor;
|
|
if(nScaleFactor > 2 && nRandom > 10)
|
|
{
|
|
string sTag = GetTag(OBJECT_SELF);
|
|
if (sTag == "ms_spawnogre9")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "ogreboss009", loc, TRUE);
|
|
DestroyObject(OBJECT_SELF);
|
|
}
|
|
if (sTag == "ms_spawnogre10")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "ogreboss010", loc, TRUE);
|
|
DestroyObject(OBJECT_SELF);
|
|
}
|
|
if (sTag == "ms_spawnogrebeserk9")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "ogreboss009", loc, TRUE);
|
|
DestroyObject(OBJECT_SELF);
|
|
}
|
|
if (sTag == "ms_spawnogrebeserk10")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "ogreboss010", loc, TRUE);
|
|
DestroyObject(OBJECT_SELF);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
// DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) *****************************************************************************************
|
|
SetListeningPatterns(); // Goes through and sets up which shouts the NPC will listen to.
|
|
// WalkWayPoints(); // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
|
|
// 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them
|
|
// 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after
|
|
// combat.
|
|
GenerateNPCTreasure(2); //* Use this to create a small amount of treasure on the creature
|
|
|
|
// Walk to Primary NPC selecting a random pathway
|
|
int npathchoice = d2();
|
|
if(npathchoice == 2)
|
|
{
|
|
ActionMoveToObject(GetObjectByTag("ai_horde000"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde001"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde002"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde004"));
|
|
}
|
|
else
|
|
{
|
|
ActionMoveToObject(GetObjectByTag("ai_horde000"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde001"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde003"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde006"));
|
|
}
|
|
|
|
int npathchoice2 = d3();
|
|
if(npathchoice2 == 1)
|
|
{
|
|
ActionMoveToObject(GetObjectByTag("ai_horde007"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde009"));
|
|
}
|
|
if(npathchoice2 == 2)
|
|
{
|
|
ActionMoveToObject(GetObjectByTag("ai_horde005"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde010"));
|
|
}
|
|
if(npathchoice2 == 3)
|
|
{
|
|
ActionMoveToObject(GetObjectByTag("ai_horde008"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde011"));
|
|
}
|
|
|
|
int npathchoice3 = d2();
|
|
if(npathchoice3 == 2)
|
|
{
|
|
ActionMoveToObject(GetObjectByTag("ai_horde020"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde012"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde014"));
|
|
}
|
|
else
|
|
{
|
|
ActionMoveToObject(GetObjectByTag("ai_horde021"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde013"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde016"));
|
|
}
|
|
|
|
ActionMoveToObject(GetObjectByTag("ai_horde015"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde017"));
|
|
ActionMoveToObject(GetObjectByTag("ai_horde018"));
|
|
}
|
|
|
|
|