Fixed sentient linking/unlinking

This commit is contained in:
smallmodel 2023-08-16 02:31:12 +02:00
parent c80b360918
commit a45a8c7742
No known key found for this signature in database
GPG key ID: A96F163ED4891440

View file

@ -803,19 +803,7 @@ Sentient::Sentient()
Sentient::~Sentient() Sentient::~Sentient()
{ {
if (m_NextSentient) { Unlink();
m_NextSentient->m_PrevSentient = m_PrevSentient;
}
if (m_PrevSentient) {
m_PrevSentient->m_NextSentient = m_NextSentient;
} else {
level.m_HeadSentient[m_Team] = m_NextSentient;
}
m_PrevSentient = NULL;
m_NextSentient = NULL;
DisbandSquadMate(this); DisbandSquadMate(this);
SentientList.RemoveObject((Sentient *)this); SentientList.RemoveObject((Sentient *)this);
@ -829,7 +817,7 @@ void Sentient::Link()
m_PrevSentient = NULL; m_PrevSentient = NULL;
m_NextSentient = level.m_HeadSentient[m_Team]; m_NextSentient = level.m_HeadSentient[m_Team];
if (m_NextSentient) { if (m_NextSentient) {
m_PrevSentient = this; m_NextSentient->m_PrevSentient = this;
} }
level.m_HeadSentient[m_Team] = this; level.m_HeadSentient[m_Team] = this;
} }
@ -2500,26 +2488,9 @@ void Sentient::EventGerman(Event *ev)
DisbandSquadMate(this); DisbandSquadMate(this);
} }
if (m_NextSentient) { Unlink();
m_NextSentient->m_PrevSentient = m_PrevSentient;
}
if (m_PrevSentient) {
m_PrevSentient->m_NextSentient = m_NextSentient;
} else {
level.m_HeadSentient[m_Team] = m_NextSentient;
}
m_NextSentient = NULL;
m_Team = TEAM_GERMAN; m_Team = TEAM_GERMAN;
m_PrevSentient = NULL; Link();
m_NextSentient = level.m_HeadSentient[TEAM_GERMAN];
if (m_NextSentient) {
m_NextSentient->m_PrevSentient = this;
}
level.m_HeadSentient[m_Team] = this;
if (bRejoinSquads) { if (bRejoinSquads) {
JoinNearbySquads(1024.0f); JoinNearbySquads(1024.0f);
@ -2541,26 +2512,10 @@ void Sentient::EventAmerican(Event *ev)
DisbandSquadMate(this); DisbandSquadMate(this);
} }
if (m_NextSentient) {
m_NextSentient->m_PrevSentient = m_PrevSentient;
}
if (m_PrevSentient) { Unlink();
m_PrevSentient->m_NextSentient = m_NextSentient;
} else {
level.m_HeadSentient[m_Team] = m_NextSentient;
}
m_NextSentient = NULL;
m_PrevSentient = NULL;
m_Team = TEAM_AMERICAN; m_Team = TEAM_AMERICAN;
Link();
m_NextSentient = level.m_HeadSentient[TEAM_AMERICAN];
if (m_NextSentient) {
m_NextSentient->m_PrevSentient = this;
}
level.m_HeadSentient[m_Team] = this;
if (bRejoinSquads) { if (bRejoinSquads) {
JoinNearbySquads(1024); JoinNearbySquads(1024);