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.
110 lines
3.1 KiB
Plaintext
110 lines
3.1 KiB
Plaintext
//:://////////////////////////////////////////////////
|
|
//:: NW_C2_DEFAULT4
|
|
/*
|
|
Default OnConversation event handler for NPCs.
|
|
|
|
*/
|
|
//:://////////////////////////////////////////////////
|
|
//:: Copyright (c) 2002 Floodgate Entertainment
|
|
//:: Created By: Naomi Novik
|
|
//:: Created On: 12/22/2002
|
|
//:://////////////////////////////////////////////////
|
|
#include "prc_inc_spells"
|
|
#include "nw_i0_generic"
|
|
|
|
void main()
|
|
{
|
|
// * if petrified, jump out
|
|
if (PRCGetHasEffect(EFFECT_TYPE_PETRIFY, OBJECT_SELF) == TRUE)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// * If dead, exit directly.
|
|
if (GetIsDead(OBJECT_SELF) == TRUE)
|
|
{
|
|
return;
|
|
}
|
|
|
|
ExecuteScript("prc_npc_conv", OBJECT_SELF);
|
|
|
|
// See if what we just 'heard' matches any of our
|
|
// predefined patterns
|
|
int nMatch = GetListenPatternNumber();
|
|
object oShouter = GetLastSpeaker();
|
|
|
|
|
|
//DMFI CODE ADDITIONS BEGIN HERE
|
|
if (GetIsPC(oShouter))
|
|
{
|
|
ExecuteScript("dmfi_voice_exe", OBJECT_SELF);
|
|
}
|
|
|
|
if (nMatch == -1 && GetIsPC(oShouter) &&(GetLocalInt(GetModule(), "dmfi_AllMute") || GetLocalInt(OBJECT_SELF, "dmfi_Mute")))
|
|
{
|
|
SendMessageToAllDMs(GetName(oShouter) + " is trying to speak to a muted NPC, " + GetName(OBJECT_SELF) + ", in area " + GetName(GetArea(OBJECT_SELF)));
|
|
SendMessageToPC(oShouter, "This NPC is muted. A DM will be here shortly.");
|
|
return;
|
|
}
|
|
//DMFI CODE ADDITIONS END HERE
|
|
|
|
|
|
|
|
if (nMatch == -1)
|
|
{
|
|
// Not a match -- start an ordinary conversation
|
|
if (GetCommandable(OBJECT_SELF))
|
|
{
|
|
ClearActions(CLEAR_NW_C2_DEFAULT4_29);
|
|
BeginConversation();
|
|
}
|
|
else
|
|
// * July 31 2004
|
|
// * If only charmed then allow conversation
|
|
// * so you can have a better chance of convincing
|
|
// * people of lowering prices
|
|
if (PRCGetHasEffect(EFFECT_TYPE_CHARMED) == TRUE)
|
|
{
|
|
ClearActions(CLEAR_NW_C2_DEFAULT4_29);
|
|
BeginConversation();
|
|
}
|
|
}
|
|
// Respond to shouts from friendly non-PCs only
|
|
else if (GetIsObjectValid(oShouter)
|
|
&& !GetIsPC(oShouter)
|
|
&& GetIsFriend(oShouter))
|
|
{
|
|
object oIntruder = OBJECT_INVALID;
|
|
// Determine the intruder if any
|
|
if(nMatch == 4)
|
|
{
|
|
oIntruder = GetLocalObject(oShouter, "NW_BLOCKER_INTRUDER");
|
|
}
|
|
else if (nMatch == 5)
|
|
{
|
|
oIntruder = GetLastHostileActor(oShouter);
|
|
if(!GetIsObjectValid(oIntruder))
|
|
{
|
|
oIntruder = GetAttemptedAttackTarget();
|
|
if(!GetIsObjectValid(oIntruder))
|
|
{
|
|
oIntruder = GetAttemptedSpellTarget();
|
|
if(!GetIsObjectValid(oIntruder))
|
|
{
|
|
oIntruder = OBJECT_INVALID;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Actually respond to the shout
|
|
RespondToShout(oShouter, nMatch, oIntruder);
|
|
}
|
|
|
|
// Send the user-defined event if appropriate
|
|
if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT))
|
|
{
|
|
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DIALOGUE));
|
|
}
|
|
}
|