void IGameController::OnCharacterSpawn(CCharacter *pChr) { if(m_GameFlags&GAMEFLAG_SURVIVAL) { // give start equipment pChr->IncreaseHealth(10); pChr->IncreaseArmor(5); pChr->GiveWeapon(WEAPON_HAMMER, -1); pChr->GiveWeapon(WEAPON_GUN, 10); pChr->GiveWeapon(WEAPON_SHOTGUN, 10); pChr->GiveWeapon(WEAPON_GRENADE, 10); pChr->GiveWeapon(WEAPON_LASER, 5); // prevent respawn pChr->GetPlayer()->m_RespawnDisabled = GetStartRespawnState(); } else { // default health pChr->IncreaseHealth(10); // give default weapons pChr->GiveWeapon(WEAPON_HAMMER, -1); pChr->GiveWeapon(WEAPON_GUN, 10); } }
void IGameController::OnCharacterSpawn(CCharacter *pChr) { if(m_GameFlags&GAMEFLAG_SURVIVAL) { // give start equipment pChr->IncreaseHealth(10); pChr->IncreaseArmor(5); pChr->GiveWeapon(new CMod_Weapon_Hammer(pChr)); pChr->GiveWeapon(new CMod_Weapon_Gun(pChr, 10)); pChr->GiveWeapon(new CMod_Weapon_Shotgun(pChr, 10)); pChr->GiveWeapon(new CMod_Weapon_Grenade(pChr, 10)); pChr->GiveWeapon(new CMod_Weapon_Laser(pChr, 5)); // prevent respawn pChr->GetPlayer()->m_RespawnDisabled = GetStartRespawnState(); } else { // default health pChr->IncreaseHealth(10); // give default weapons pChr->GiveWeapon(new CMod_Weapon_Hammer(pChr)); pChr->GiveWeapon(new CMod_Weapon_Gun(pChr, 10)); } }
void IGameController::DoTeamChange(CPlayer *pPlayer, int Team, bool DoChatMsg) { Team = ClampTeam(Team); if(Team == pPlayer->GetTeam()) return; int OldTeam = pPlayer->GetTeam(); pPlayer->SetTeam(Team); int ClientID = pPlayer->GetCID(); // notify clients CNetMsg_Sv_Team Msg; Msg.m_ClientID = ClientID; Msg.m_Team = Team; Msg.m_Silent = DoChatMsg ? 0 : 1; Msg.m_CooldownTick = pPlayer->m_TeamChangeTick; Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, -1); char aBuf[128]; str_format(aBuf, sizeof(aBuf), "team_join player='%d:%s' m_Team=%d", ClientID, Server()->ClientName(ClientID), Team); GameServer()->Console()->Print(IConsole::OUTPUT_LEVEL_DEBUG, "game", aBuf); // update effected game settings if(OldTeam != TEAM_SPECTATORS) { --m_aTeamSize[OldTeam]; m_UnbalancedTick = TBALANCE_CHECK; } if(Team != TEAM_SPECTATORS) { ++m_aTeamSize[Team]; m_UnbalancedTick = TBALANCE_CHECK; if(m_GameState == IGS_WARMUP_GAME && HasEnoughPlayers()) SetGameState(IGS_WARMUP_GAME, 0); pPlayer->m_IsReadyToPlay = !IsPlayerReadyMode(); if(m_GameFlags&GAMEFLAG_SURVIVAL) pPlayer->m_RespawnDisabled = GetStartRespawnState(); } OnPlayerInfoChange(pPlayer); GameServer()->OnClientTeamChange(ClientID); }
void IGameController::DoTeamChange(CPlayer *pPlayer, int Team, bool DoChatMsg) { Team = ClampTeam(Team); if(Team == pPlayer->GetTeam()) return; int OldTeam = pPlayer->GetTeam(); pPlayer->SetTeam(Team); int ClientID = pPlayer->GetCID(); char aBuf[128]; if(DoChatMsg) { str_format(aBuf, sizeof(aBuf), "'%s' joined the %s", Server()->ClientName(ClientID), GetTeamName(Team)); GameServer()->SendChat(-1, CGameContext::CHAT_ALL, aBuf); } str_format(aBuf, sizeof(aBuf), "team_join player='%d:%s' m_Team=%d", ClientID, Server()->ClientName(ClientID), Team); GameServer()->Console()->Print(IConsole::OUTPUT_LEVEL_DEBUG, "game", aBuf); // update effected game settings if(OldTeam != TEAM_SPECTATORS) { --m_aTeamSize[OldTeam]; m_UnbalancedTick = TBALANCE_CHECK; } if(Team != TEAM_SPECTATORS) { ++m_aTeamSize[Team]; m_UnbalancedTick = TBALANCE_CHECK; if(m_GameState == IGS_WARMUP_GAME && HasEnoughPlayers()) SetGameState(IGS_WARMUP_GAME, 0); pPlayer->m_IsReadyToPlay = !IsPlayerReadyMode(); if(m_GameFlags&GAMEFLAG_SURVIVAL) pPlayer->m_RespawnDisabled = GetStartRespawnState(); } OnPlayerInfoChange(pPlayer); GameServer()->OnClientTeamChange(ClientID); }