Initial upload. PRC8 has been added. Module compiles, PRC's default AI & treasure scripts have been integrated. Started work on top hak for SLA / Ability / Scripting modifications.
136 lines
4.6 KiB
Plaintext
136 lines
4.6 KiB
Plaintext
#include "jw_privates_inc"
|
|
|
|
//DETERMINE COMBAT ROUND SUB FUNCTIONS
|
|
|
|
int BashDoorCheck(object oIntruder = OBJECT_INVALID);
|
|
int DetermineClassToUse();
|
|
|
|
|
|
int GetAttackCompatibility(talent tUse, int nClass);
|
|
int MatchReflexAttacks(talent tUse);
|
|
int MatchFortAttacks(talent tUse);
|
|
object GetRangedAttackGroup(int bAllowFriendlyFire = FALSE);
|
|
object GetToughestMeleeAttacker();
|
|
object GetToughestAttacker();
|
|
//struct sSpellSelect(); // AnalyzeCombatSituation();
|
|
int GetAlliedHD();
|
|
int GetEnemyHD();
|
|
talent StartAttackLoop();
|
|
|
|
int UniversalSpellMatch(talent tUse);
|
|
|
|
|
|
//::///////////////////////////////////////////////
|
|
//:: Bash Doors
|
|
//:: Copyright (c) 2002 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Used in DetermineCombatRound to keep a
|
|
henchmen bashing doors.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: April 4, 2002
|
|
//:://////////////////////////////////////////////
|
|
|
|
/* int BashDoorCheck(object oIntruder = OBJECT_INVALID)
|
|
{
|
|
int bDoor = FALSE;
|
|
//This code is here to make sure that henchmen keep bashing doors and placables.
|
|
object oDoor = GetLocalObject(OBJECT_SELF, "NW_GENERIC_DOOR_TO_BASH");
|
|
if(GetIsObjectValid(oDoor)&&!GetPlotFlag(oDoor))
|
|
{
|
|
int nDoorMax = GetMaxHitPoints(oDoor);
|
|
int nDoorNow = GetCurrentHitPoints(oDoor);
|
|
int nCnt = GetLocalInt(OBJECT_SELF,"NW_GENERIC_DOOR_TO_BASH_HP");
|
|
if(!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN))
|
|
|| (!GetIsObjectValid(oIntruder) && !GetIsObjectValid(GetMaster())))
|
|
{
|
|
if(GetLocked(oDoor))
|
|
{
|
|
if(nDoorMax == nDoorNow)
|
|
{
|
|
nCnt++;
|
|
SetLocalInt(OBJECT_SELF,"NW_GENERIC_DOOR_TO_BASH_HP", nCnt);
|
|
}
|
|
if(nCnt <= 0)
|
|
{
|
|
bDoor = TRUE;
|
|
if(GetHasFeat(FEAT_IMPROVED_POWER_ATTACK))
|
|
{
|
|
ActionUseFeat(FEAT_IMPROVED_POWER_ATTACK, oDoor);
|
|
}
|
|
else if(GetHasFeat(FEAT_POWER_ATTACK))
|
|
{
|
|
ActionUseFeat(FEAT_POWER_ATTACK, oDoor);
|
|
}
|
|
else
|
|
{
|
|
ActionAttack(oDoor);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(bDoor == FALSE)
|
|
{
|
|
PlayVoiceChat(VOICE_CHAT_CUSS);
|
|
DeleteLocalObject(OBJECT_SELF, "NW_GENERIC_DOOR_TO_BASH");
|
|
DeleteLocalInt(OBJECT_SELF, "NW_GENERIC_DOOR_TO_BASH_HP");
|
|
}
|
|
}
|
|
return bDoor;
|
|
}
|
|
*/
|
|
//::///////////////////////////////////////////////
|
|
//:: Determine Class to Use
|
|
//:: Copyright (c) 2002 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Determines which of a NPCs three classes to
|
|
use in DetermineCombatRound
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: April 4, 2002
|
|
//:://////////////////////////////////////////////
|
|
|
|
/* int DetermineClassToUse()
|
|
{
|
|
int nClass;
|
|
int nTotal = GetCharacterLevel(OBJECT_SELF);
|
|
float fTotal = IntToFloat(nTotal);
|
|
|
|
int nState1 = FloatToInt((IntToFloat(GetLevelByClass(GetClassByPosition(1))) / fTotal) * 100);
|
|
MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(OBJECT_SELF) + "Class: " + IntToString(GetClassByPosition(1)) + " %" + IntToString(nState1));
|
|
|
|
int nState2 = FloatToInt((IntToFloat(GetLevelByClass(GetClassByPosition(2))) / fTotal) * 100) + nState1;
|
|
MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(OBJECT_SELF) + "Class: " + IntToString(GetClassByPosition(2)) + " %" + IntToString(nState2));
|
|
|
|
int nState3 = FloatToInt((IntToFloat(GetLevelByClass(GetClassByPosition(3))) / fTotal) * 100) + nState2;
|
|
MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(OBJECT_SELF) + "Class: " + IntToString(GetClassByPosition(3)) + " %" + IntToString(nState3));
|
|
|
|
int nUseClass = d100();
|
|
MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + "D100 Roll " + IntToString(nUseClass));
|
|
|
|
if(nUseClass <= nState1)
|
|
{
|
|
nClass = GetClassByPosition(1);
|
|
}
|
|
else if(nUseClass > nState1 && nUseClass <= nState2)
|
|
{
|
|
nClass = GetClassByPosition(2);
|
|
}
|
|
else
|
|
{
|
|
nClass = GetClassByPosition(3);
|
|
}
|
|
MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetName(OBJECT_SELF) + " Return Class = " + IntToString(nClass));
|
|
|
|
return nClass;
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|