Creature group

From Dragon Age Toolset Wiki
Jump to: navigation, search
Creature topics:

Assigning groups to creatures:

  • Creatures that start as non-hostile should get assigned the 'Neutral' group.
  • Creatures that start as hostile should get assigned the 'Hostile' group.
  • Creatures that can end up turning hostile towards other creatures should get a unique group.
  • The Neutral group is always non-hostile towards every group in the game
  • The Player group is always hostile towards the Hostile group
  • The Friendly group is always hostile towards the Hostile group.
  • The Friendly group is always non-hostile towards the Player group.

To create a custom creature group:

  1. Open the toolset_groups.xls 2DA
  2. Place a new entry at the end of the file for your group
  3. Turn the xls file into a GDA file (need defined process for accomplishing this) and place in override if testing local. Check in to perforce to include in nightly build.
  4. Now to use the group, use the SetGroupHostility function to set who the group is hostile towards.

Functions

UT_CombatStart(object oCreatureA, object oCreatureB)

Triggers combat between 2 creatures.

This function will switch the creature's group to be the 'hostile' group if it's current group is 'neutral' or 'friendly'. No other groups will be switched — for these cases the function will just set the 2 groups hostile. This function does not change global hostility status between the Player, Neutral, Friendly and Hostile groups. This function does nothing else. The perception system will trigger the combat itself.

UT_CombatStop(object oCreatureA, object oCreatureB)

Stops combat between 2 creatures.

This function will switch the creature's group to be the 'neutral' group if it's current group is 'hostile'. This function does not change global hostility status between the Player, Neutral, Friendly and Hostile groups. No other groups will be switched — for these cases the function will just set the 2 groups non-hostile. This function will clear all commands from both creatures but will do nothing else.

Examples

Party is attacked by 1 or more hostiles

DESIGNER:

  1. Assigns the 'hostile' group to each enemy

SYSTEM:

  1. Perception triggers combat when the enemy noticed the player

Party attacks a single non-hostile NPC after dialog

DESIGNER:

  1. Assigns the enemy the non-hostile group
  2. Runs the Combat_Start() function with the player and NPC as parameters

SYSTEM:

  1. Switches the NPC's group to the 'hostile' group
  2. Perception triggers combat automatically

Party attacks X non-hostile enemies after dialog

DESIGNER:

  1. Assigns all enemy the non-hostile group
  2. Runs the Combat_Start() function for each non-hostile NPC with the player and non-hostile NPC as parameters.

SYSTEM:

  1. Switches each NPC's group to the 'hostile' group
  2. Perception triggers combat automatically

X non-hostiles attack Y non-hostiles

DESIGNER:

  1. Assigns unique group IDs for both groups of NPCs
  2. Runs the Combat_Start() function once with a creature from each group as parameters

SYSTEM:

  1. Sets the 2 groups hostile towards each other (not switching groups!)
  2. Perception causes them to start attacking each other

X hostiles attack Y hostiles -> player joins in

DESIGNER:

  1. Assigns unique group IDs for both groups of NPCs
  2. Runs the Combat_Start() function once with a creature from each group as parameters
  3. Runs the Combat_Start() function once with the player and a creature from one group as parameters
  4. Runs the Combat_Start() function once with the player and a creature from the second group as parameters

SYSTEM:

  1. Sets the 2 groups hostile towards each other (not switching groups!)
  2. Sets the 2 groups hostile towards the player group (not switch groups!)
  3. Perception causes them to start attacking each other and the player's party

Player fights a group of enemies, one enemy surrenders

DESIGNER:

  1. Trigger combat using Combat_Start()
  2. Run Combat_Stop() using each enemy and the player as parameters

SYSTEM:

  1. Stop combat for each enemy and party member
  2. Change the group of each enemy to 'non-hostile' only if they are currently hostile. Otherwise, set the NPC's group and the player group as non-hostile.