mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-05-09 20:18:17 +03:00
Fixed/finalized actor_dog
This commit is contained in:
parent
50e589f27c
commit
ce7dfdd986
2 changed files with 50 additions and 68 deletions
|
@ -639,8 +639,6 @@ public:
|
|||
const char *m_pszDebugState;
|
||||
/* currently animating ( used in G_RunFrame ) */
|
||||
bool m_bAnimating;
|
||||
/* Am I a doggo ? */
|
||||
bool m_bDog;
|
||||
/* 2.0: ignore bad place? */
|
||||
bool m_bIgnoreBadPlace;
|
||||
/* 2.0: bad place index? (0=none) */
|
||||
|
|
|
@ -58,7 +58,7 @@ bool Actor::IsDogState(int state)
|
|||
|
||||
void Actor::Begin_Dog(void)
|
||||
{
|
||||
m_bDog = true;
|
||||
m_bIsAnimal = true;
|
||||
}
|
||||
|
||||
void Actor::End_Dog(void)
|
||||
|
@ -73,10 +73,13 @@ void Actor::Think_Dog_Idle(void)
|
|||
}
|
||||
|
||||
UpdateEyeOrigin();
|
||||
m_pszDebugState = "Dog_Idle";
|
||||
m_bHasDesiredLookAngles = false;
|
||||
m_eNextAnimMode = ANIM_MODE_NORMAL;
|
||||
m_csNextAnimString = STRING_ANIM_DOG_IDLE_SCR;
|
||||
m_pszDebugState = "Dog_Idle";
|
||||
|
||||
NoPoint();
|
||||
ForwardLook();
|
||||
|
||||
DesiredAnimation(ANIM_MODE_NORMAL, STRING_ANIM_DOG_IDLE_SCR);
|
||||
|
||||
CheckForThinkStateTransition();
|
||||
PostThink(false);
|
||||
}
|
||||
|
@ -90,49 +93,35 @@ void Actor::Think_Dog_Attack(void)
|
|||
UpdateEyeOrigin();
|
||||
m_pszDebugState = "Dog_Attack";
|
||||
|
||||
if (m_Enemy && !(m_Enemy->IsSubclassOfActor())) {
|
||||
SetPath(m_Enemy->origin, NULL, 0, NULL, 0.0);
|
||||
if (PathExists()) {
|
||||
vec2_t delta;
|
||||
VectorSub2D(m_Enemy->origin, origin, delta);
|
||||
if (!m_Enemy || (m_Enemy->flags & FL_NOTARGET)) {
|
||||
DesiredAnimation(ANIM_MODE_NORMAL, STRING_ANIM_DOG_CURIOUS_SCR);
|
||||
TransitionState(20);
|
||||
|
||||
if (VectorLength2DSquared(delta) >= 8000) {
|
||||
FaceMotion();
|
||||
m_csNextAnimString = STRING_ANIM_DOG_CHASE_SCR;
|
||||
m_eNextAnimMode = ANIM_MODE_PATH;
|
||||
} else {
|
||||
{
|
||||
vec2_t facedir;
|
||||
facedir[0] = m_Enemy->origin[0] - origin[0];
|
||||
facedir[1] = m_Enemy->origin[1] - origin[1];
|
||||
if (facedir[0] != 0 || facedir[1] != 0) {
|
||||
SetDesiredYawDir(facedir);
|
||||
}
|
||||
}
|
||||
SetDesiredLookDir(m_Enemy->origin - origin);
|
||||
m_eNextAnimMode = ANIM_MODE_NORMAL;
|
||||
m_csNextAnimString = STRING_ANIM_DOG_ATTACK_SCR;
|
||||
}
|
||||
m_bNextForceStart = false;
|
||||
CheckForThinkStateTransition();
|
||||
PostThink(false);
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
vec2_t facedir;
|
||||
facedir[0] = m_Enemy->origin[0] - origin[0];
|
||||
facedir[1] = m_Enemy->origin[1] - origin[1];
|
||||
if (facedir[0] != 0 || facedir[1] != 0) {
|
||||
SetDesiredYawDir(facedir);
|
||||
}
|
||||
}
|
||||
SetDesiredLookDir(m_Enemy->origin - origin);
|
||||
CheckForThinkStateTransition();
|
||||
PostThink(false);
|
||||
return;
|
||||
}
|
||||
|
||||
SetPath(m_Enemy->origin, NULL, 0, NULL, 0.0);
|
||||
|
||||
if (PathExists()) {
|
||||
vec2_t delta;
|
||||
VectorSub2D(m_Enemy->origin, origin, delta);
|
||||
|
||||
if (VectorLength2DSquared(delta) >= 8000) {
|
||||
FaceMotion();
|
||||
DesiredAnimation(ANIM_MODE_PATH, STRING_ANIM_DOG_CHASE_SCR);
|
||||
} else {
|
||||
SetDesiredYawDest(m_Enemy->origin);
|
||||
SetDesiredLookDir(m_Enemy->origin - origin);
|
||||
DesiredAnimation(ANIM_MODE_NORMAL, STRING_ANIM_DOG_ATTACK_SCR);
|
||||
}
|
||||
} else {
|
||||
SetDesiredYawDest(m_Enemy->origin);
|
||||
SetDesiredLookDir(m_Enemy->origin - origin);
|
||||
DesiredAnimation(ANIM_MODE_NORMAL, STRING_ANIM_DOG_CURIOUS_SCR);
|
||||
TransitionState(20);
|
||||
}
|
||||
m_bNextForceStart = false;
|
||||
m_eNextAnimMode = ANIM_MODE_NORMAL;
|
||||
m_csNextAnimString = STRING_ANIM_DOG_CURIOUS_SCR;
|
||||
TransitionState(20, 0);
|
||||
|
||||
CheckForThinkStateTransition();
|
||||
PostThink(false);
|
||||
|
@ -140,25 +129,20 @@ void Actor::Think_Dog_Attack(void)
|
|||
|
||||
void Actor::Think_Dog_Curious(void)
|
||||
{
|
||||
if (RequireThink()) {
|
||||
UpdateEyeOrigin();
|
||||
m_pszDebugState = "Dog_Curious";
|
||||
|
||||
if (m_Enemy && !m_Enemy->IsSubclassOfActor()) {
|
||||
vec2_t vDelta;
|
||||
VectorSub2D(m_Enemy->origin, origin, vDelta);
|
||||
|
||||
if (vDelta[0] != 0 || vDelta[1] != 0) {
|
||||
SetDesiredYawDir(vDelta);
|
||||
}
|
||||
|
||||
SetDesiredLookDir(m_Enemy->origin - origin);
|
||||
}
|
||||
m_bNextForceStart = false;
|
||||
m_eNextAnimMode = ANIM_MODE_NORMAL;
|
||||
m_csNextAnimString = STRING_ANIM_DOG_CURIOUS_SCR;
|
||||
|
||||
CheckForThinkStateTransition();
|
||||
PostThink(false);
|
||||
if (!RequireThink()) {
|
||||
return;
|
||||
}
|
||||
|
||||
UpdateEyeOrigin();
|
||||
m_pszDebugState = "Dog_Curious";
|
||||
|
||||
if (m_Enemy && !(m_Enemy->flags & FL_NOTARGET)) {
|
||||
SetDesiredYawDest(m_Enemy->origin);
|
||||
SetDesiredLookDir(m_Enemy->origin - origin);
|
||||
}
|
||||
|
||||
DesiredAnimation(ANIM_MODE_NORMAL, STRING_ANIM_DOG_CURIOUS_SCR);
|
||||
|
||||
CheckForThinkStateTransition();
|
||||
PostThink(false);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue