mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-17 11:00:38 +02:00
Initial Prey Game integration support.
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
|
||||
|
||||
#include "precompiled.h"
|
||||
#pragma hdrstop
|
||||
|
||||
#include "prey_local.h"
|
||||
|
||||
#ifndef ID_DEMO_BUILD //HUMANHEAD jsh PCF 5/26/06: code removed for demo build
|
||||
CLASS_DECLARATION(hhMonsterAI, hhMutate)
|
||||
EVENT( MA_OnProjectileLaunch, hhMutate::Event_OnProjectileLaunch )
|
||||
END_CLASS
|
||||
|
||||
void hhMutate::Event_OnProjectileLaunch(hhProjectile *proj) {
|
||||
const function_t *newstate = NULL;
|
||||
if ( !enemy.IsValid() || !AI_COMBAT ) {
|
||||
return;
|
||||
}
|
||||
|
||||
float min = spawnArgs.GetFloat( "dda_dodge_min", "0.3" );
|
||||
float max = spawnArgs.GetFloat( "dda_dodge_max", "0.8" );
|
||||
float dodgeChance = 0.6f;
|
||||
|
||||
dodgeChance = (min + (max-min)*gameLocal.GetDDAValue() );
|
||||
|
||||
if ( ai_debugBrain.GetBool() ) {
|
||||
gameLocal.Printf( "%s dodge chance %f\n", GetName(), dodgeChance );
|
||||
}
|
||||
if ( gameLocal.random.RandomFloat() > dodgeChance ) {
|
||||
return;
|
||||
}
|
||||
|
||||
//determine which side to dodge to
|
||||
idVec3 povPos, targetPos;
|
||||
povPos = enemy->GetPhysics()->GetOrigin();
|
||||
targetPos = GetPhysics()->GetOrigin();
|
||||
idVec3 povToTarget = targetPos - povPos;
|
||||
povToTarget.z = 0.f;
|
||||
povToTarget.Normalize();
|
||||
idVec3 povLeft, povUp;
|
||||
povToTarget.OrthogonalBasis(povLeft, povUp);
|
||||
povLeft.Normalize();
|
||||
|
||||
idVec3 projVel = proj->GetPhysics()->GetLinearVelocity();
|
||||
projVel.Normalize();
|
||||
float dot = povLeft * projVel;
|
||||
if ( dot < 0 ) {
|
||||
newstate = GetScriptFunction( "state_DodgeBackRight" );
|
||||
} else {
|
||||
newstate = GetScriptFunction( "state_DodgeBackLeft" );
|
||||
}
|
||||
|
||||
if ( newstate ) {
|
||||
SetState( newstate );
|
||||
UpdateScript();
|
||||
}
|
||||
}
|
||||
|
||||
#define LinkScriptVariable( name ) name.LinkTo( scriptObject, #name )
|
||||
void hhMutate::LinkScriptVariables(void) {
|
||||
hhMonsterAI::LinkScriptVariables();
|
||||
LinkScriptVariable( AI_COMBAT );
|
||||
}
|
||||
#endif //HUMANHEAD jsh PCF 5/26/06: code removed for demo build
|
||||
Reference in New Issue
Block a user