Added AI_EVENT_BADPLACE

This commit is contained in:
smallmodel 2023-10-14 01:16:50 +02:00
parent 7a2311d6e6
commit 1e94cdd8ca
No known key found for this signature in database
GPG key ID: 9F2D623CEDF08512
2 changed files with 67 additions and 60 deletions

View file

@ -5581,9 +5581,7 @@ Default pain handler.
*/ */
void Actor::DefaultPain(Event *ev) void Actor::DefaultPain(Event *ev)
{ {
gi.Printf("DefaultPain event");
SetThink(THINKSTATE_PAIN, THINK_PAIN); SetThink(THINKSTATE_PAIN, THINK_PAIN);
HandlePain(ev); HandlePain(ev);
} }
@ -5660,9 +5658,7 @@ Default killed handler.
void Actor::DefaultKilled(Event *ev, bool bPlayDeathAnim) void Actor::DefaultKilled(Event *ev, bool bPlayDeathAnim)
{ {
ClearStates(); ClearStates();
SetThink(THINKSTATE_KILLED, THINK_KILLED); SetThink(THINKSTATE_KILLED, THINK_KILLED);
HandleKilled(ev, bPlayDeathAnim); HandleKilled(ev, bPlayDeathAnim);
} }
@ -9363,51 +9359,59 @@ void Actor::DefaultReceiveAIEvent(
vec3_t event_origin, int iType, Entity *originator, float fDistSquared, float fMaxDistSquared vec3_t event_origin, int iType, Entity *originator, float fDistSquared, float fMaxDistSquared
) )
{ {
if (!IsDead()) { if (IsDead()) {
if (!originator->IsDead() && originator->IsSubclassOfSentient() && ((Sentient *)originator)->m_Team == m_Team return;
&& !IsSquadMate((Sentient *)originator)) { }
MergeWithSquad((Sentient *)originator);
}
switch (iType) { if (originator
case AI_EVENT_WEAPON_FIRE: && !originator->IsDead()
case AI_EVENT_WEAPON_IMPACT: && originator->IsSubclassOfSentient()
if (Square(m_fHearing) > fDistSquared) { && ((Sentient*)originator)->m_Team == m_Team
WeaponSound(iType, event_origin, fDistSquared, fMaxDistSquared, originator); && !IsSquadMate((Sentient*)originator)) {
} MergeWithSquad((Sentient*)originator);
break; }
case AI_EVENT_EXPLOSION:
case AI_EVENT_MISC: switch (iType) {
case AI_EVENT_MISC_LOUD: case AI_EVENT_WEAPON_FIRE:
if (Square(m_fHearing) > fDistSquared) { case AI_EVENT_WEAPON_IMPACT:
CuriousSound(iType, event_origin, fDistSquared, fMaxDistSquared); if (Square(m_fHearing) > fDistSquared) {
} WeaponSound(iType, event_origin, fDistSquared, fMaxDistSquared, originator);
break;
case AI_EVENT_AMERICAN_VOICE:
case AI_EVENT_GERMAN_VOICE:
case AI_EVENT_AMERICAN_URGENT:
case AI_EVENT_GERMAN_URGENT:
if (Square(m_fHearing) > fDistSquared) {
VoiceSound(iType, event_origin, fDistSquared, fMaxDistSquared, originator);
}
break;
case AI_EVENT_FOOTSTEP:
if (Square(m_fHearing) > fDistSquared) {
FootstepSound(event_origin, fDistSquared, fMaxDistSquared, originator);
}
break;
case AI_EVENT_GRENADE:
GrenadeNotification(originator);
break;
default:
{
char assertStr[16317] = {0};
strcpy(assertStr, "\"unknown ai_event type\"\n\tMessage: ");
Q_strcat(assertStr, sizeof(assertStr), DumpCallTrace("iType = %i", iType));
assert(false && assertStr);
}
break;
} }
break;
case AI_EVENT_EXPLOSION:
case AI_EVENT_MISC:
case AI_EVENT_MISC_LOUD:
if (Square(m_fHearing) > fDistSquared) {
CuriousSound(iType, event_origin, fDistSquared, fMaxDistSquared);
}
break;
case AI_EVENT_AMERICAN_VOICE:
case AI_EVENT_GERMAN_VOICE:
case AI_EVENT_AMERICAN_URGENT:
case AI_EVENT_GERMAN_URGENT:
if (Square(m_fHearing) > fDistSquared) {
VoiceSound(iType, event_origin, fDistSquared, fMaxDistSquared, originator);
}
break;
case AI_EVENT_FOOTSTEP:
if (Square(m_fHearing) > fDistSquared) {
FootstepSound(event_origin, fDistSquared, fMaxDistSquared, originator);
}
break;
case AI_EVENT_GRENADE:
GrenadeNotification(originator);
break;
case AI_EVENT_BADPLACE:
UpdateBadPlaces();
break;
default:
{
char assertStr[16317] = { 0 };
strcpy(assertStr, "\"unknown ai_event type\"\n\tMessage: ");
Q_strcat(assertStr, sizeof(assertStr), DumpCallTrace("iType = %i", iType));
assert(false && assertStr);
}
break;
} }
} }

View file

@ -334,19 +334,6 @@ enum eThinkState {
NUM_THINKSTATES, NUM_THINKSTATES,
}; };
#define AI_EVENT_NONE 0
#define AI_EVENT_WEAPON_FIRE 1
#define AI_EVENT_WEAPON_IMPACT 2
#define AI_EVENT_EXPLOSION 3
#define AI_EVENT_AMERICAN_VOICE 4
#define AI_EVENT_GERMAN_VOICE 5
#define AI_EVENT_AMERICAN_URGENT 6
#define AI_EVENT_GERMAN_URGENT 7
#define AI_EVENT_MISC 8
#define AI_EVENT_MISC_LOUD 9
#define AI_EVENT_FOOTSTEP 10
#define AI_EVENT_GRENADE 11
enum eThinkNum { enum eThinkNum {
THINK_VOID, THINK_VOID,
THINK_TURRET, THINK_TURRET,
@ -396,6 +383,22 @@ enum eThinkLevel {
NUM_THINKLEVELS NUM_THINKLEVELS
}; };
enum eAIEvent {
AI_EVENT_NONE,
AI_EVENT_WEAPON_FIRE,
AI_EVENT_WEAPON_IMPACT,
AI_EVENT_EXPLOSION,
AI_EVENT_AMERICAN_VOICE,
AI_EVENT_GERMAN_VOICE,
AI_EVENT_AMERICAN_URGENT,
AI_EVENT_GERMAN_URGENT,
AI_EVENT_MISC,
AI_EVENT_MISC_LOUD,
AI_EVENT_FOOTSTEP,
AI_EVENT_GRENADE,
AI_EVENT_BADPLACE // Added in 2.0
};
enum eActorNationality { enum eActorNationality {
ACTOR_NATIONALITY_DEFAULT, ACTOR_NATIONALITY_DEFAULT,
ACTOR_NATIONALITY_AMERICAN, ACTOR_NATIONALITY_AMERICAN,