From 01259aaab937612d75a5b88bbd410bfd253f6a82 Mon Sep 17 00:00:00 2001 From: Roman C Date: Thu, 28 Sep 2006 02:11:19 +0000 Subject: [PATCH] -fixed and enabled shared ally vision for TEAMPLAY and 'Locked Teams' modes -fixed disabled players allying their team members -reenabled God Mode (Ctrl-G) for Debug builds and campaign mode git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@769 4a71c877-e1ca-e34f-864e-861f7616d084 --- src/init.c | 18 ++++++++++++++++-- src/keymap.c | 3 ++- src/multigifts.c | 7 +++++-- src/radar.c | 6 ++++-- src/visibility.c | 45 ++++++++++++++++++++++++--------------------- 5 files changed, 51 insertions(+), 28 deletions(-) diff --git a/src/init.c b/src/init.c index f9cb4905e..1bf04ca3c 100644 --- a/src/init.c +++ b/src/init.c @@ -1421,7 +1421,6 @@ BOOL stageOneInitialise(void) return FALSE; } - // debug mode only so use normal MALLOC psHeap = memGetBlockHeap(); memSetBlockHeap(NULL); @@ -1824,6 +1823,7 @@ BOOL stageThreeInitialise(void) //UDWORD i,j; STRUCTURE *psStr; + SDWORD i; debug(LOG_MAIN, "stageThreeInitalise"); bTrackingTransporter = FALSE; @@ -1908,9 +1908,23 @@ BOOL stageThreeInitialise(void) setAllPauseStates(FALSE); /* decide if we have to create teams */ - if(game.alliance == ALLIANCES_TEAMS) + if(game.alliance == ALLIANCES_TEAMS && (game.type == TEAMPLAY || game.type == SKIRMISH)) + { createTeamAlliances(); + /* Update ally vision for pre-placed structures */ + for(i=0;ipsNext) + { + if(aiCheckAlliances(psStr->player,selectedPlayer)) + visTilesUpdate((BASE_OBJECT *)psStr,FALSE); + } + } + } + } // ffs JS (and its a global!) if (getLevelLoadType() != GTYPE_SAVE_MIDMISSION) diff --git a/src/keymap.c b/src/keymap.c index 153a30290..5f1396236 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -428,7 +428,8 @@ void keyInitMappings( BOOL bForceDefaults ) keyAddMapping(KEYMAP_ASSIGNABLE,KEY_IGNORE,(KEY_CODE)KEY_MAXSCAN,KEYMAP_PRESSED,kf_ToggleReopenBuildMenu,strresGetString(psStringRes,STR_BIND_REOPEN_BUILD)); // NOTE THIS!!!!!!! - // available: ctrl+g, ctrl+e, ctrl+m + // available: ctrl+e, ctrl+m + keyAddMapping(KEYMAP__DEBUG,KEY_LCTRL,KEY_G,KEYMAP_PRESSED,kf_ToggleGodMode, "Toggle god Mode Status"); //we need this one - Tr keyAddMapping(KEYMAP___HIDE,KEY_LSHIFT,KEY_BACKSPACE,KEYMAP_PRESSED,kf_ToggleDebugMappings, "TOGGLE Debug Mappings"); keyAddMapping(KEYMAP__DEBUG,KEY_IGNORE,KEY_SCROLLLOCK,KEYMAP_PRESSED,kf_TogglePauseMode, strresGetString(psStringRes,STR_BIND_PAUSE)); keyAddMapping(KEYMAP__DEBUG,KEY_IGNORE,KEY_J,KEYMAP_PRESSED,kf_MaxScrollLimits, "Maximum scroll limits"); diff --git a/src/multigifts.c b/src/multigifts.c index 2f4a11f57..b611a6906 100644 --- a/src/multigifts.c +++ b/src/multigifts.c @@ -483,7 +483,7 @@ void formAlliance(UBYTE p1, UBYTE p2,BOOL prop,BOOL allowAudio,BOOL allowNotific } else if((bMultiPlayer || game.type == SKIRMISH) && game.alliance == ALLIANCES_TEAMS) //not campaign and alliances are transitive { - giftRadar(p1,p2,FALSE); + giftRadar(p1,p2,FALSE); //FIXME: reenable giftRadar(p2,p1,FALSE); } @@ -989,7 +989,10 @@ void createTeamAlliances(void) { if( i!=j && (playerTeam[i] == playerTeam[j]) //wto different players belonging to the same team && !aiCheckAlliances(i,j) && (playerTeam[i] >= 0)) //not allied and not ignoring teams - formAlliance(i,j,FALSE,FALSE,FALSE); //create silently + { + if(game.skDiff[i] && game.skDiff[j]) //make sure both players are enabled + formAlliance(i,j,FALSE,FALSE,FALSE); //create silently + } } } diff --git a/src/radar.c b/src/radar.c index ade80e7d2..4a9fa7a7c 100644 --- a/src/radar.c +++ b/src/radar.c @@ -716,7 +716,8 @@ static void DrawRadarObjects(UBYTE *screen,UDWORD Modulus,UWORD boxSizeH,UWORD b { if(psDroid->visible[selectedPlayer] OR godMode - OR (bMultiPlayer && game.type == TEAMPLAY && aiCheckAlliances(selectedPlayer,psDroid->player)) + OR (bMultiPlayer && (game.type == TEAMPLAY || game.alliance == ALLIANCES_TEAMS) + && aiCheckAlliances(selectedPlayer,psDroid->player)) ) { x=(psDroid->x/TILE_UNITS)-RadarScrollX; @@ -795,7 +796,8 @@ static void DrawRadarObjects(UBYTE *screen,UDWORD Modulus,UWORD boxSizeH,UWORD b { if(psStruct->visible[selectedPlayer] OR godMode - OR (bMultiPlayer && game.type == TEAMPLAY && aiCheckAlliances(selectedPlayer,psStruct->player)) + OR (bMultiPlayer && (game.type == TEAMPLAY || game.alliance == ALLIANCES_TEAMS) + && aiCheckAlliances(selectedPlayer,psStruct->player)) ) { x=(psStruct->x/TILE_UNITS)-RadarScrollX; diff --git a/src/visibility.c b/src/visibility.c index 3685eb52c..31f07701c 100644 --- a/src/visibility.c +++ b/src/visibility.c @@ -205,9 +205,10 @@ static BOOL rayTerrainCallback(SDWORD x, SDWORD y, SDWORD dist) // new - ask alex M if( (selectedPlayer!=rayPlayer) AND - (bMultiPlayer && game.type == TEAMPLAY && aiCheckAlliances(selectedPlayer,rayPlayer)) ) + (bMultiPlayer && (game.type == TEAMPLAY || game.alliance == ALLIANCES_TEAMS) + && aiCheckAlliances(selectedPlayer,rayPlayer)) ) { - SET_TILE_VISIBLE(selectedPlayer,psTile); + SET_TILE_VISIBLE(selectedPlayer,psTile); //reveal radar } // new - ask Alex M @@ -217,11 +218,12 @@ static BOOL rayTerrainCallback(SDWORD x, SDWORD y, SDWORD dist) { if( ((UDWORD)rayPlayer == selectedPlayer) OR // new - ask AM - (bMultiPlayer && game.type == TEAMPLAY && aiCheckAlliances(selectedPlayer,rayPlayer)) // can see opponent moving + (bMultiPlayer && (game.type == TEAMPLAY || game.alliance == ALLIANCES_TEAMS) + && aiCheckAlliances(selectedPlayer,rayPlayer)) // can see opponent moving // new - ask AM ) { - avInformOfChange(x>>TILE_SHIFT,y>>TILE_SHIFT); + avInformOfChange(x>>TILE_SHIFT,y>>TILE_SHIFT); //reveal map } } @@ -845,11 +847,10 @@ void processVisibility(BASE_OBJECT *psObj) // get all the objects from the grid the droid is in - gridStartIterate((SDWORD)psObj->x, (SDWORD)psObj->y); - // Fix for ally vis - if( bMultiPlayer && (game.type == TEAMPLAY) ) + // Make sure allies can see us + if( bMultiPlayer && (game.type == TEAMPLAY || game.alliance == ALLIANCES_TEAMS) ) { for(player=0; player