Jump to content

"NUM_TERAIN"


Acid81

Recommended Posts

  • 2 weeks later...

I've tried editing the Build Facilities flash UI for NUM_TERAIN work with no luck. Flash is hard coded to 7 by 4 in AS but changing it to 9 by 5 did nothing.

 

Edit: on a side note I cut out most of the UPK code that was left at the end of the SWF files cutting the flash zip from 460MB to 2MB.

Link to comment
Share on other sites

I guess this is mostly of topic...

But I just did some experimenting with the XGBase functions in XComStragegyGame.upk and it seems relatively easy to remove the access lifts and the requirement to have them, thereby making the base a big 7*4 section instead of 2*3*4.

Alternatively it is very simple to move the elevators to column zero and have a single 6*4 section.

http://hem.bredband.net/bertrich/XCOM/Temp/xcom_baselayoutchanges.jpg

Link to comment
Share on other sites

I have said before I don't know much about Unreal modding but could this code in XGBase.GenerateTiles have something to do with being unable to use NUM_TERAIN

 

function GenerateTiles()
{
    local int X, Y;
    local array<int> arrDeepRockTiles;
    local int iNumSteamVents, iTile, I;

    iNumSteamVents = 1 + Rand(class'XGTacticalGameCore'.default.NUM_STARTING_STEAM_VENTS);
    m_arrTiles.Add(5 * 7);
    m_arrFacilities.Add(5 * 7);
    Y = 0;
    J0x5A:
    // End:0x333 [Loop If]
    if(Y < 5)
    {
        X = 0;
        J0x75:
        // End:0x325 [Loop If]
        if(X < 7)
        {
            // End:0xD3
            if(Y == 0)
            {
                m_arrTiles[TileIndex(X, Y)].iType = 3;
            }
            // End:0x291
            else
            {
                // End:0x181
                if(Y == 1)
                {
                    m_arrTiles[TileIndex(X, Y)].iType = 3;
                    // End:0x17E
                    if((X > (7 / 2)) && Roll(75))
                    {
                        m_arrTiles[TileIndex(X, Y)].iType = 0;
                    }
                }
                // End:0x291
                else
                {
                    // End:0x1DF
                    if(IsAccessLocation(X, Y))
                    {
                        m_arrTiles[TileIndex(X, Y)].iType = 3;
                    }
                    // End:0x291
                    else
                    {
                        // End:0x22D
                        if(Roll(20))
                        {
                            m_arrTiles[TileIndex(X, Y)].iType = 2;
                        }
                        // End:0x291
                        else
                        {
                            m_arrTiles[TileIndex(X, Y)].iType = 0;
                            arrDeepRockTiles.AddItem(TileIndex(X, Y));
                        }
                    }
                }
            }
            m_arrTiles[TileIndex(X, Y)].X = X;
            m_arrTiles[TileIndex(X, Y)].Y = Y;
            ++ X;
            // [Loop Continue]
            goto J0x75;
        }
        ++ Y;
        // [Loop Continue]
        goto J0x5A;
    }
    I = 0;
    J0x33E:
    // End:0x3E0 [Loop If]
    if(I < iNumSteamVents)
    {
        iTile = Rand(arrDeepRockTiles.Length);
        m_arrTiles[arrDeepRockTiles[iTile]].iType = 1;
        m_arrSteamTiles.AddItem(arrDeepRockTiles[iTile]);
        arrDeepRockTiles.Remove(iTile, 1);
        ++ I;
        // [Loop Continue]
        goto J0x33E;
    }
    SetFacility(1, 0, 0);
    SetFacility(3, 2, 0);
    SetFacility(2, 4, 0);
    SetFacility(4, 6, 0);
    SetFacility(6, 3, 1);
    m_arrTiles[TileIndex(3, 1)].iTileState = 1;
    SetFacility(9, 2, 1);
    // End:0x4BC
    if(Game().GetDifficulty() <= 0)
    {
        SetFacility(12, 0, 1);
        Game().m_arrFacilityUnlocks[12] = 1;
    }
    UpdateTiles();
    //return;    
}

 


Found better looking code in XGBuildUI

function int GetTilesWide()
{
    return 7;
    //return ReturnValue;    
}

function int GetTilesHigh()
{
    return 5;
    //return ReturnValue;    
}

Looks to be a few places with hard coded base size

 

function OnCursorLeft()
{
    // End:0x2E
    if(m_kCursor.X == 0)
    {
        PlayBadSound();
        return;
    }
    // End:0xC3
    if(Base().GetTileAt(m_kCursor.X - 1, m_kCursor.Y).bSecondTile)
    {
        m_kCursor.X -= 2;
    }
    // End:0xE2
    else
    {
        m_kCursor.X -= 1;
    }
    PlayScrollSound();
    UpdateView();
    //return;    
}

function OnCursorRight()
{
    // End:0x32
    if(m_kCursor.X == (7 - 1))
    {
        PlayBadSound();
        return;
    }
    m_kCursor.X += m_kCursor.iSize;
    PlayScrollSound();
    UpdateView();
    //return;    
}

function OnCursorUp()
{
    // End:0x2E
    if(m_kCursor.Y == 1)
    {
        PlayBadSound();
        return;
    }
    m_kCursor.Y -= 1;
    // End:0xDB
    if(Base().GetTileAt(m_kCursor.X, m_kCursor.Y).bSecondTile)
    {
        m_kCursor.X -= 1;
    }
    PlayScrollSound();
    UpdateView();
    //return;    
}

function OnCursorDown()
{
    // End:0x32
    if(m_kCursor.Y == (5 - 1))
    {
        PlayBadSound();
        return;
    }
    m_kCursor.Y += 1;
    // End:0xDF
    if(Base().GetTileAt(m_kCursor.X, m_kCursor.Y).bSecondTile)
    {
        m_kCursor.X -= 1;
    }
    PlayScrollSound();
    UpdateView();
    //return;    
}

 

 

Link to comment
Share on other sites

There are lots of hard coded references to higth and width in the XGBase functions.

On the positive side the functions are relatively easy to grasp and mod...

 

In case anyone is satisfied with simpler mod only getting rid of the elevator shaft, I have made a modlet for that which can be found in the following thread where it is a little less of topic:

http://forums.nexusmods.com/index.php?/topic/811577-base-generation/?p=8892090

Edited by Bertilsson
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...