199 lines
8.3 KiB
Plaintext
199 lines
8.3 KiB
Plaintext
/*
|
|
Pstemarie: 12-23-2019
|
|
|
|
Generic Creature OnUserDefined Event Script
|
|
|
|
To use:
|
|
|
|
1. Set the creature to use the X2 Monster AI (scripts with the prefix
|
|
x2_def_****).
|
|
|
|
2. Set this script as the creature's OnUserDefined event handler.
|
|
|
|
3. Set an INT variable named "X2_USERDEFINED_ONSPAWN_EVENTS" with a
|
|
value of "2" on the creature.
|
|
|
|
4. Uncomment any desired special behavior under the PRE and POST-SPAWN
|
|
conditionals
|
|
|
|
Leeched from nw_c2_default9, nw_c2_herbivore, and x2_def_userdef - all (c) 2002-2004 Bioware
|
|
*/
|
|
|
|
const int EVENT_USER_DEFINED_PRESPAWN = 1510;
|
|
const int EVENT_USER_DEFINED_POSTSPAWN = 1511;
|
|
|
|
#include "x0_i0_anims"
|
|
|
|
void main()
|
|
{
|
|
int nEvent = GetUserDefinedEventNumber();
|
|
|
|
if (nEvent == EVENT_USER_DEFINED_PRESPAWN)
|
|
{
|
|
|
|
}
|
|
else if (nEvent == EVENT_USER_DEFINED_POSTSPAWN)
|
|
{
|
|
//----------------------------------------------------------------------
|
|
// 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_APPEAR_SPAWN_IN_ANIMATION);
|
|
//* If this is set, the NPC will appear using the "EffectAppear" animation instead of fading in.
|
|
|
|
//SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);
|
|
//* This will play Ambient Animations until the NPC sees an enemy or is cleared.
|
|
//* NOTE: These animations will play automatically for Encounter Creatures.
|
|
|
|
//SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS);
|
|
//* This will play Ambient Animations until the NPC sees an enemy or is cleared.
|
|
//* NOTE: NPCs using this form of ambient animations will not move to other NPCs.
|
|
|
|
//----------------------------------------------------------------------
|
|
// ANIMATION SETTINGS
|
|
/*
|
|
These are extra conditions you can put on creatures using ambient animations - either
|
|
NW_FLAG_AMBIENT_ANIMATIONS or NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS.
|
|
*/
|
|
|
|
//SetAnimationCondition(NW_ANIM_FLAG_IS_CIVILIZED);
|
|
//* Civilized creatures interact with placeables in their area that have the tag "NW_INTERACTIVE"
|
|
//* and "talk" to each other.
|
|
//*
|
|
//* Humanoid races are civilized by default, so only set this flag for monster races that you want to
|
|
//* behave the same way.
|
|
|
|
//SetAnimationCondition(NW_ANIM_FLAG_CONSTANT);
|
|
//* If this flag is set, this creature will constantly be acting. Otherwise, creatures will only start
|
|
//* performing their ambient animations when they first perceive a player, and they will stop when the
|
|
//* player moves away.
|
|
|
|
//SetAnimationCondition(NW_ANIM_FLAG_CHATTER);
|
|
//* Civilized creatures with this flag set will randomly use a few voicechats. It's a good idea to avoid
|
|
//* putting this on multiple creatures using the same voiceset.
|
|
|
|
//SetAnimationCondition(NW_ANIM_FLAG_IS_MOBILE_CLOSE_RANGE);
|
|
//* Creatures with _immobile_ ambient animations can have this flag set to make them mobile in close
|
|
//* range. They will never leave their immediate area, but will move around in it, frequently returning
|
|
//* to their starting point.
|
|
//*
|
|
//* NOTE: Creatures spawned inside interior areas that contain a waypoint with one of the tags "NW_HOME",
|
|
//* "NW_TAVERN", and "NW_SHOP" will automatically have this condition set.
|
|
|
|
//----------------------------------------------------------------------
|
|
// SPECIAL BEHAVIOR SECTION
|
|
/*
|
|
The following section outlines the various special behaviors that can be placed on a creature.
|
|
To activate one of the special behaviors:
|
|
|
|
1. Comment in SetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL);
|
|
2. Comment in ONE other special behavior setting (ONLY ONE).
|
|
*/
|
|
|
|
//SetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL);
|
|
|
|
//* OPTIONAL SPECIAL BEHAVIORS - ONLY ONE OF THESE SHOULD BE SET AT A TIME
|
|
|
|
//SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN);
|
|
//* Flee to a waypoint and return a short time later.
|
|
|
|
//SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE);
|
|
//* Flee to a waypoint and do not return.
|
|
|
|
//SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE);
|
|
//* Teleport to a waypoint and do not return.
|
|
|
|
//SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN);
|
|
//* Teleport to a waypoint and return a short time later.
|
|
|
|
//SetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE);
|
|
//* Will only attack those that close within 5m and are not friends, Rangers or Druids.
|
|
|
|
//SetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE);
|
|
//* Will flee those that close within 7m if they are not friends, Rangers or Druids.
|
|
|
|
//SetCombatCondition(X0_COMBAT_FLAG_RANGED);
|
|
//* Ranged Attacker: Will attempt to stay at ranged distance from their target.
|
|
|
|
//SetCombatCondition(X0_COMBAT_FLAG_DEFENSIVE);
|
|
//* Defensive Attacker: Will use defensive combat feats and parry
|
|
|
|
//SetCombatCondition(X0_COMBAT_FLAG_AMBUSHER);
|
|
//* Ambusher: Will go stealthy/invisible and attack, then run away and try to go stealthy
|
|
//* again before attacking anew.
|
|
|
|
SetCombatCondition(X0_COMBAT_FLAG_COWARDLY);
|
|
// * Cowardly: Will attempt to flee attackers.
|
|
|
|
|
|
//----------------------------------------------------------------------
|
|
// 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 are 1001 - 1007, and
|
|
1510 and 1511.
|
|
*/
|
|
//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
|
|
|
|
}
|
|
else if(nEvent == EVENT_HEARTBEAT ) //HEARTBEAT
|
|
{
|
|
|
|
}
|
|
else if(nEvent == EVENT_PERCEIVE) // PERCEIVE
|
|
{
|
|
|
|
}
|
|
else if(nEvent == EVENT_END_COMBAT_ROUND) // END OF COMBAT
|
|
{
|
|
|
|
}
|
|
else if(nEvent == EVENT_DIALOGUE) // ON DIALOGUE
|
|
{
|
|
|
|
}
|
|
else if(nEvent == EVENT_ATTACKED) // ATTACKED
|
|
{
|
|
|
|
}
|
|
else if(nEvent == EVENT_DAMAGED) // DAMAGED
|
|
{
|
|
|
|
}
|
|
else if(nEvent == 1007) // DEATH - do not use for critical code, does not fire reliably all the time
|
|
{
|
|
|
|
}
|
|
else if(nEvent == EVENT_DISTURBED) // DISTURBED
|
|
{
|
|
|
|
}
|
|
}
|