MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / OnVehicleDestroyed

Method OnVehicleDestroyed

engine/Poseidon/AI/AICenterStats.cpp:297–589  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

295}
296
297void AIStats::OnVehicleDestroyed(EntityAI* killed, EntityAI* killer)
298{
299 if (!killed)
300 {
301 return;
302 }
303
304 Person* killedSoldier = dyn_cast<Person>(killed);
305 Person* killerPerson = GetPlayerPerson(killer);
306
307 if (killed && killer)
308 {
309 _mission.RecordReportKill(killed, killer);
310 }
311
312 // MP statistics
313 bool isEnemy;
314 if (killer == killed)
315 {
316 isEnemy = false;
317 }
318 else if (killed->CommanderUnit() && killed->CommanderUnit()->GetPerson()->GetExperience() < ExperienceRenegadeLimit)
319 {
320 isEnemy = true;
321 }
322 else
323 {
324 if (killer)
325 {
326 AICenter* center = GWorld->GetCenter(killer->Vehicle::GetTargetSide());
327 isEnemy = center && center->IsEnemy(killed->Vehicle::GetTargetSide());
328 }
329 else
330 {
331 isEnemy = true;
332 }
333 }
334
335 const MissionHeader* header = GetNetworkManager().GetMissionHeader();
336 if (header && header->aiKills)
337 {
338 if (killer)
339 {
340 if (killerPerson && killerPerson->Brain() && killerPerson->Brain()->IsPlayable())
341 {
342 RString playerName = killerPerson->GetInfo()._name;
343 TargetSide playerSide = TSideUnknown;
344 AIGroup* grp = killerPerson->Brain()->GetGroup();
345 if (grp)
346 {
347 AICenter* center = grp->GetCenter();
348 if (center)
349 {
350 playerSide = center->GetSide();
351 }
352 }
353 _mission.AddMPKill(playerName, playerSide, killed->GetType(),
354 killedSoldier && killedSoldier->IsNetworkPlayer(), isEnemy);

Callers 1

DestroyMethod · 0.45

Calls 15

GetPlayerPersonFunction · 0.85
PositionToAA11Function · 0.85
LocalizeStringFunction · 0.85
sprintfFunction · 0.85
ClampRankIndexFunction · 0.85
RecordReportKillMethod · 0.80
GetExperienceMethod · 0.80
GetPersonMethod · 0.80
IsEnemyMethod · 0.80
BrainMethod · 0.80
IsPlayableMethod · 0.80
AddMPKillMethod · 0.80

Tested by

no test coverage detected