Jaysyn904 5d27edafba Major update
Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system.  Added PC deleter.  Added ACP 4.1.  Full compile.  Updated release archive.
2024-09-16 23:40:48 -04:00

76 lines
2.3 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Associate: On Dialogue
//:: NW_CH_AC4
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Determines the course of action to be taken
by the generic script after dialogue or a
shout is initiated.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 24, 2001
//:://////////////////////////////////////////////
#include "prc_inc_spells"
#include "x0_inc_henai"
// * This function checks to make sure no
// * dehibilating effects are on the player that should
// * Don't use getcommandable for this since the dying system
// * will sometimes leave a player in a noncommandable state
int AbleToTalk(object oSelf)
{
if (GetCommandable(oSelf) == FALSE)
{
if (PRCGetHasEffect(EFFECT_TYPE_CONFUSED, oSelf) || PRCGetHasEffect(EFFECT_TYPE_DOMINATED, oSelf) ||
PRCGetHasEffect(EFFECT_TYPE_PETRIFY, oSelf) || PRCGetHasEffect(EFFECT_TYPE_PARALYZE, oSelf) ||
PRCGetHasEffect(EFFECT_TYPE_STUNNED, oSelf) || PRCGetHasEffect(EFFECT_TYPE_FRIGHTENED, oSelf)
)
{
return FALSE;
}
}
return TRUE;
}
void main()
{
object oMaster = GetMaster();
int nMatch = GetListenPatternNumber();
object oShouter = GetLastSpeaker();
object oIntruder;
//DMFI CODE ADDITIONS BEGIN HERE
if (!GetIsInCombat(OBJECT_SELF))
ExecuteScript("dmfi_voice_exe", OBJECT_SELF);
//DMFI CODE ADDITIONS END HERE
if (nMatch == -1) {
if(AbleToTalk(OBJECT_SELF) || GetCurrentAction() != ACTION_OPENLOCK)
{
ClearActions(CLEAR_NW_CH_AC4_28);
// * if in XP2, use an alternative dialog file
string sDialog = "";
if (GetLocalInt(GetModule(), "X2_L_XP2") == 1)
{
sDialog = "x2_associate";
}
BeginConversation(sDialog);
}
} else {
// listening pattern matched
if (GetIsObjectValid(oShouter) && oMaster == oShouter)
{
SetCommandable(TRUE);
bkRespondToHenchmenShout(oShouter, nMatch, oIntruder, TRUE);
}
}
// Signal user-defined event
if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT)) {
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DIALOGUE));
}
}