int CheckMonsterballScore (void) { ubyte special; if (!(gameData.app.nGameMode & GM_MONSTERBALL)) return 0; if (!gameData.hoard.monsterballP) return 0; if (gameData.hoard.nLastHitter != LOCALPLAYER.nObject) return 0; special = gameData.segs.segment2s [gameData.hoard.monsterballP->nSegment].special; if ((special != SEGMENT_IS_GOAL_BLUE) && (special != SEGMENT_IS_GOAL_RED)) return 0; if ((GetTeam (gameData.multiplayer.nLocalPlayer) == TEAM_RED) == (special == SEGMENT_IS_GOAL_RED)) MultiSendCaptureBonus (gameData.multiplayer.nLocalPlayer); else MultiSendCaptureBonus (-gameData.multiplayer.nLocalPlayer - 1); CreatePlayerAppearanceEffect (gameData.hoard.monsterballP); RemoveMonsterball (); CreateMonsterball (); MultiSendMonsterball (1, 1); return 1; }
int CSegment::ConquerCheck (void) { CPlayerData *playerP = gameData.multiplayer.players + gameData.multiplayer.nLocalPlayer; int team = GetTeam (gameData.multiplayer.nLocalPlayer) + 1; time_t t; gameStates.entropy.bConquering = 0; if (!(gameData.app.nGameMode & GM_ENTROPY)) return 0; #if 0 if (gameStates.entropy.nTimeLastMoved < 0) { HUDMessage (0, "you are moving"); StopConquerWarning (); return 0; } if (playerP->shields < 0) { HUDMessage (0, "you are dead"); StopConquerWarning (); return 0; } if (playerP->secondaryAmmo [PROXMINE_INDEX] < extraGameInfo [1].nCaptureVirusLimit) { HUDMessage (0, "too few viruses"); StopConquerWarning (); return 0; } if (m_owner < 0) { HUDMessage (0, "neutral room"); StopConquerWarning (); return 0; } if (m_owner == team) { HUDMessage (0, "own room"); StopConquerWarning (); return 0; } #else if ((gameStates.entropy.nTimeLastMoved < 0) || (playerP->shields < 0) || (playerP->secondaryAmmo [PROXMINE_INDEX] < extraGameInfo [1].entropy.nCaptureVirusLimit) || (m_owner < 0) || (m_owner == team)) { StopConquerWarning (); return 0; } #endif t = SDL_GetTicks (); if (!gameStates.entropy.nTimeLastMoved) gameStates.entropy.nTimeLastMoved = (int) t; if (t - gameStates.entropy.nTimeLastMoved < extraGameInfo [1].entropy.nCaptureTimeLimit * 1000) { gameStates.entropy.bConquering = 1; if (m_owner > 0) StartConquerWarning (); return 0; } StopConquerWarning (); if (m_owner) MultiSendCaptureBonus ((char) gameData.multiplayer.nLocalPlayer); playerP->secondaryAmmo [PROXMINE_INDEX] -= extraGameInfo [1].entropy.nCaptureVirusLimit; if (playerP->secondaryAmmo [SMARTMINE_INDEX] > extraGameInfo [1].entropy.nBashVirusCapacity) playerP->secondaryAmmo [SMARTMINE_INDEX] -= extraGameInfo [1].entropy.nBashVirusCapacity; else playerP->secondaryAmmo [SMARTMINE_INDEX] = 0; MultiSendConquerRoom (char (team), char (m_owner), char (m_group)); ConquerRoom (char (team), char (m_owner), char (m_group)); return 1; }