131 lines
3.7 KiB
Plaintext
131 lines
3.7 KiB
Plaintext
/*
|
|
|
|
Henchman Inventory And Battle AI
|
|
|
|
This file is used for options for the henchman ai.
|
|
|
|
The exe and hak versions are different than the erf version.
|
|
|
|
The exe and hak version still use the small scripts to control options.
|
|
|
|
The erf version can just be built directly using this file without using
|
|
the small control files, it can be changed to anything including
|
|
module properties, spawn script, etc.
|
|
|
|
*/
|
|
|
|
|
|
// void main() { }
|
|
|
|
|
|
// how frequently shouts are done by monsters to call in allies to help
|
|
// DM clients can get flooded with these messages in which case the
|
|
// number can be increased to reduce the frequency.
|
|
const int HENCH_MONSTER_SHOUT_FREQUENCY = 5;
|
|
|
|
// This flag turns off when set to true monsters hearing other monsters and
|
|
// attacking them
|
|
const int HENCH_MONSTER_DONT_CHECK_HEARD_MONSTER = FALSE;
|
|
|
|
|
|
// general options
|
|
const int HENCH_GENAI_SOUINSTALLED = 0x0001; // expansion pack installed (includes HotU)
|
|
const int HENCH_GENAI_ENABLEHEARING = 0x0002; // (obsolete) creatures use hearing
|
|
const int HENCH_GENAI_ENABLERAISE = 0x0004; // will use raise dead and resurrection
|
|
|
|
|
|
int GetGeneralOptions(int nSel)
|
|
{
|
|
return HENCH_GENAI_SOUINSTALLED | HENCH_GENAI_ENABLERAISE;
|
|
}
|
|
|
|
|
|
// monster options
|
|
const int HENCH_MONAI_STEALTH = 0x0001; // monsters use stealth
|
|
const int HENCH_MONAI_WANDER = 0x0002; // monsters can wander
|
|
const int HENCH_MONAI_UNLOCK = 0x0004; // monsters can unlock or bash locked doors
|
|
const int HENCH_MONAI_OPEN = 0x0008; // monsters can open doors
|
|
const int HENCH_MONAI_DISTRIB = 0x0010; // monsters distribute themselves when attacking
|
|
const int HENCH_MONAI_HASTE = 0x0020; // monsters haste themselves after being damaged
|
|
const int HENCH_MONAI_HEALPT = 0x0040; // monsters generate heal potions
|
|
const int HENCH_MONAI_COMP = 0x0080; // monsters summon familiars and animal companions
|
|
|
|
|
|
int GetMonsterOptions(int nSel)
|
|
{
|
|
int nReturn = HENCH_MONAI_STEALTH | HENCH_MONAI_COMP;
|
|
|
|
if (nSel & HENCH_MONAI_WANDER)
|
|
{
|
|
if (d10() > 2)
|
|
{
|
|
nReturn = nReturn | HENCH_MONAI_WANDER;
|
|
}
|
|
}
|
|
if (nSel & HENCH_MONAI_DISTRIB)
|
|
{
|
|
// monsters distribute themselves when attacking
|
|
if (GetGameDifficulty() >= GAME_DIFFICULTY_CORE_RULES)
|
|
{
|
|
nReturn = nReturn | HENCH_MONAI_DISTRIB;
|
|
}
|
|
}
|
|
/* if (nSel & HENCH_MONAI_HASTE)
|
|
{
|
|
// monsters haste themselves after being damaged
|
|
if (GetGameDifficulty() == GAME_DIFFICULTY_DIFFICULT)
|
|
{
|
|
nReturn = nReturn | HENCH_MONAI_HASTE;
|
|
}
|
|
}*/
|
|
/* if (nSel & HENCH_MONAI_HEALPT)
|
|
{
|
|
int iChance = d10();
|
|
int iDifficulty = GetGameDifficulty();
|
|
|
|
// Self healing below 50% if enemy is far, otherwise between 20% and 50% only
|
|
if ((iDifficulty == GAME_DIFFICULTY_DIFFICULT && iChance > 2) ||
|
|
(iDifficulty == GAME_DIFFICULTY_CORE_RULES && iChance > 8))
|
|
{
|
|
nReturn = nReturn | HENCH_MONAI_HEALPT;
|
|
}
|
|
} */
|
|
return nReturn;
|
|
}
|
|
|
|
|
|
// henchman options
|
|
const int HENCH_HENAI_NOATTACK = 0x0001; // associates dont attack master on damage
|
|
const int HENCH_HENAI_INVENTORY = 0x0002; // PC can use inventory on associates
|
|
|
|
const float fHenchHearingDistance = 5.0;
|
|
const float fHenchMasterHearingDistance = 100.0;
|
|
|
|
|
|
int GetHenchmanOptions(int nSel)
|
|
{
|
|
return HENCH_HENAI_NOATTACK | HENCH_HENAI_INVENTORY;
|
|
}
|
|
|
|
|
|
// provides override for creature using items (i.e. Valen in HotU)
|
|
int GetCreatureUseItemsOverride(object oCreature)
|
|
{
|
|
// if (GetTag(oCreature) == "x2_hen_valen")
|
|
// {
|
|
// return TRUE;
|
|
// }
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// prevent heartbeat detection of enemies
|
|
int GetUseHeartbeatDetect()
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
|
|
|