MCPcopy Create free account
hub / github.com/ddnet/ddnet / Die

Method Die

src/game/server/entities/character.cpp:1002–1033  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1000}
1001
1002void CCharacter::Die(int Killer, int Weapon, bool SendKillMsg)
1003{
1004 if(Killer != WEAPON_GAME && m_SetSavePos[RESCUEMODE_AUTO])
1005 GetPlayer()->m_LastDeath = m_RescueTee[RESCUEMODE_AUTO];
1006 StopRecording();
1007 int ModeSpecial = GameServer()->m_pController->OnCharacterDeath(this, GameServer()->m_apPlayers[Killer], Weapon);
1008
1009 log_info("game", "kill killer='%d:%s' victim='%d:%s' weapon=%d special=%d",
1010 Killer, Server()->ClientName(Killer),
1011 m_pPlayer->GetCid(), Server()->ClientName(m_pPlayer->GetCid()), Weapon, ModeSpecial);
1012
1013 if(SendKillMsg)
1014 {
1015 SendDeathMessageIfNotInLockedTeam(Killer, Weapon, ModeSpecial);
1016 }
1017
1018 // a nice sound, and bursting tee death effect
1019 GameServer()->CreateSound(m_Pos, SOUND_PLAYER_DIE, TeamMask());
1020 GameServer()->CreateDeath(m_Pos, m_pPlayer->GetCid(), TeamMask());
1021
1022 // this is to rate limit respawning to 3 secs
1023 m_pPlayer->m_PreviousDieTick = m_pPlayer->m_DieTick;
1024 m_pPlayer->m_DieTick = Server()->Tick();
1025
1026 m_Alive = false;
1027 SetSolo(false);
1028
1029 GameServer()->m_World.RemoveEntity(this);
1030 GameServer()->m_World.m_Core.m_apCharacters[m_pPlayer->GetCid()] = nullptr;
1031 Teams()->OnCharacterDeath(GetPlayer()->GetCid(), Weapon);
1032 CancelSwapRequests();
1033}
1034
1035bool CCharacter::TakeDamage(vec2 Force, int Dmg, int From, int Weapon)
1036{

Callers 2

KillCharacterMethod · 0.80
HandleCharacterTilesMethod · 0.80

Calls 8

ClientNameMethod · 0.80
CreateSoundMethod · 0.80
CreateDeathMethod · 0.80
ServerClass · 0.50
OnCharacterDeathMethod · 0.45
GetCidMethod · 0.45
TickMethod · 0.45
RemoveEntityMethod · 0.45

Tested by

no test coverage detected