Finished PRC8 integration. Moved creature abilities to top hak. Setup tooling. Created release archive
149 lines
7.5 KiB
Plaintext
149 lines
7.5 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 "jw_phat_lewt"
|
|
#include "NW_I0_GENERIC"
|
|
#include "jw_privates_inc"
|
|
|
|
void main()
|
|
{
|
|
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
|
|
|
|
SetStartLocation();
|
|
|
|
SetAssociateListenPatterns();//Sets up the special henchmen listening patterns
|
|
SetListeningPatterns(); // Goes through and sets up which shouts the NPC will listen to.
|
|
|
|
SetAssociateState(NW_ASC_POWER_CASTING);
|
|
SetAssociateState(NW_ASC_HEAL_AT_50);
|
|
SetAssociateState(NW_ASC_RETRY_OPEN_LOCKS);
|
|
SetAssociateState(NW_ASC_DISARM_TRAPS);
|
|
SetAssociateState(NW_ASC_MODE_DEFEND_MASTER, FALSE);
|
|
SetAssociateState(NW_ASC_USE_RANGED_WEAPON, FALSE); //User ranged weapons by default if true.
|
|
SetAssociateState(NW_ASC_DISTANCE_2_METERS);
|
|
|
|
// April 2002: Summoned monsters, associates and familiars need to stay
|
|
// further back due to their size.
|
|
if (GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, GetMaster()) == OBJECT_SELF ||
|
|
GetAssociate(ASSOCIATE_TYPE_DOMINATED, GetMaster()) == OBJECT_SELF ||
|
|
GetAssociate(ASSOCIATE_TYPE_FAMILIAR, GetMaster()) == OBJECT_SELF ||
|
|
GetAssociate(ASSOCIATE_TYPE_SUMMONED, GetMaster()) == OBJECT_SELF)
|
|
{
|
|
SetAssociateState(NW_ASC_DISTANCE_4_METERS);
|
|
}
|
|
|
|
//// 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.
|
|
|
|
if (GetHitDice(OBJECT_SELF)>4)
|
|
{
|
|
SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET);
|
|
SetListenPattern(OBJECT_SELF, "I_AM_HEALING", 123); //listen out for this phrase
|
|
SetListening(OBJECT_SELF,TRUE);
|
|
}
|
|
// This will set the listening pattern on the NPC to attack when allies call
|
|
|
|
|
|
if ((GetChallengeRating(OBJECT_SELF)>3.0)&&(GetLevelByClass(CLASS_TYPE_ROGUE,OBJECT_SELF)>=1)&&(GetStandardFactionReputation(STANDARD_FACTION_DEFENDER,OBJECT_SELF)<40))
|
|
{
|
|
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
|
|
|
|
// 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.
|
|
|
|
//Declare major variables
|
|
object oTarget = OBJECT_SELF;
|
|
int nDuration = 20;
|
|
|
|
|
|
int nDamage=nDuration*10;
|
|
if (nDamage>150)
|
|
{
|
|
nDamage=150;
|
|
}
|
|
|
|
effect eStone = EffectDamageReduction(10, DAMAGE_POWER_PLUS_THREE,nDamage);
|
|
effect eAC = EffectACIncrease(5, AC_NATURAL_BONUS);
|
|
effect eVis = EffectVisualEffect(VFX_IMP_DEATH_WARD);
|
|
effect eShadow = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR);
|
|
effect eSpell = EffectSpellLevelAbsorption(9, 0, SPELL_SCHOOL_NECROMANCY);
|
|
effect eImmDeath = EffectImmunity(IMMUNITY_TYPE_DEATH);
|
|
effect eImmNeg = EffectDamageImmunityIncrease(DAMAGE_TYPE_NEGATIVE, 100);
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
|
|
|
//Link major effects
|
|
effect eLink = EffectLinkEffects(eStone, eAC);
|
|
eLink = EffectLinkEffects(eLink, eVis);
|
|
eLink = EffectLinkEffects(eLink, eShadow);
|
|
eLink = EffectLinkEffects(eLink, eImmDeath);
|
|
eLink = EffectLinkEffects(eLink, eImmNeg);
|
|
eLink = EffectLinkEffects(eLink, eDur);
|
|
eLink = EffectLinkEffects(eLink, eSpell);
|
|
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SHADOW_SHIELD, FALSE));
|
|
//Apply linked effect
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(nDuration));
|
|
|
|
Makephatlewt(); //* Use this to create a small amount of treasure on the creature
|
|
///SendMessageToAllDMs("Called treasure script from spawn");
|
|
}
|
|
|
|
|