Each section of MotherBase/a FOB is called a cluster.
Each cluster may have up to four platforms. Platforms may also be referred to as plants (which may be abbreviated to plnt).
Each platform may have 1 unique or 4 divisions.
A clusters grade is the number of platforms built for it, with 0 being no platforms for cluster. Plant Id may be 0 indexed or 1 indexed depending on the function using it, usually if the function is exe based it will be from 0, lua based from 1. With the lowest Id representing the unique platform for the cluster.
May be referenced in files and lua either 0 indexed or 1 indexed depending on the function using it, usually if the function is exe based it will be from 0, lua based from 1.
In some cases in lua a list of cluster names may be used in a different order/will not conform to the standard clusterIds.
When used as part of the name uses cl%02d format, 0 indexed, ex Medical is cl04
id(0) | id(1) | Cluster name | Game name | |
---|---|---|---|---|
0 | 1 | Command | ||
1 | 2 | Combat | ||
2 | 3 | Develop | Research and Development | |
3 | 4 | Support | ||
4 | 5 | Medical | ||
5 | 6 | Spy | Intel | |
6 | 7 | BaseDev | Base Development | |
7 | 8 | Separation | Quarantine Platform | |
0 | 1 | Zoo | As it uses a seperate mission/is not part of mother base it uses clusterId 0, also isn’t referred to by cluster name. |
Common platforms are divided into 4 divisions, unique covers all 4/central area of plat
Reference to the fpks seem to only be in exe:
%s/pack_division/%s_%03d%01d.%s
ex: /Assets/tpp/pack/location/mtbs/pack_division/mtbs_division_0010.fpk
params:
dv_0000
uq_0000
Set by vars.mbLayoutCode layouts are positions and orientations of clusters and platforms.
For a given range of a layout there is actually four layouts, indexed from 0 to account for the available connections from the center/command cluster depending on the number of platforms built for that cluster.
FOB events run on ‘fully built’ bases, so the highest number in a range (i.e. layouts 10-13 -> mbLayoutCode == 13)
vars.mbLayoutCode is driven by MotherBaseStage.ModifyLayoutCode(layoutCode), via TppLocation.ModifyMbsLayoutCode, While this is set next-mission functions in TppMission, it gets its actual value in TppMission.Load where unless it’s a story mission is driven by TppMotherBaseManagement.GetMbsTopologyType(), with further setup via TppLocation.ApplyPlatformParamToMbStage
You can derive the layout pack using TppPackList.AddFOBLayout
MB:
local
layoutPack="/Assets/tpp/pack/mission2/"..missionTypeName.."/"..missionCodeName.."/"..missionCodeName..string.format("_ly%03d",vars.mbLayoutCode)..".fpk"
FOB:
local
layoutPath="/Assets/tpp/pack/mission2/"..missionTypeName.."/"..missionCodeName.."/"..missionCodeName..string.format"_area_ly%03d",vars.mbLayoutCode)
..".fpk"
FOB also has clusterLayoutPack:
local
clusterLayoutPack=layoutPath..string.format("_cl%02d",clusterId)..".fpk"
Layouts use the packs /pack/location/mtbs/pack_layout/mtbs_layout_[5
number layoutCode].fpk
to define the placement and types of clusters of
platforms and bridges surrounding them, and
/pack/location/mtbs/pack_area/mtbs_area_ly[layoutCode]_cl[clusterId].fpk
to place gimmicks and other entities that can’t be parented to Mother
Base layout locators. While it’s not fully known how they work, the game
will not accept empty .fpk/.fpkd at those paths when loading a layout.
Idroid/UI .mbl layout files are in /Assets/tpp/pack/mbdvc/mb_dvc_top.fpk
Mother Base layout notes
While positions of all (except command) change between layout 0>1, from 1> BaseDev and Spy(Intel) doesnt move, and from 2>3 Medical and Support dont move
rotations change between 0>1 (all clusters but medical and combat), but no change between 1>3
Game sometimes uses releative positions and rotations to the plnt or cluster center,
which can be gotten via MotherBaseStage.GetDemoCenter and various helpers built around that
If you want to cut down on work you may just want to support just mbLayout 3, which has the following cluster centers
mbLayout 3
0 Command Cluster plnt0 center: 0,0,0
1 Combat Cluster plnt0 center: 1132.5300292969,0,-606.62774658203
2 Develop Cluster plnt0 center: 1188.8494873047,0,306.6155090332
3 Support Cluster plnt0 center: 371.46563720703,0,863.11901855469
4 Medical Cluster plnt0 center: -137.1102142334,0,-957.18774414063
5 Spy Cluster plnt0 center: -681.25305175781,0,536.275390625
6 BaseDev Cluster plnt0 center: -746.36590576172,0,-372.41799926758
layoutCode | Description | Map Image |
---|---|---|
00-03 | Default offline Mother Base layout code. | |
10-13 | Layout code used in FOBs. | |
20-23 | Layout code used in FOBs. | |
30-33 | Layout code used in FOBs. | |
40-43 | Layout code used in FOBs. | |
53 | Unused layout code. Only the .mbl UI map layout file 53 remains. | |
60-63 | Unused layout code. Only the .mbl UI map layout files 60, 61, 62 and 63 remain. | |
70-73 | Layout code used in FOBs. | |
80-83 | Layout code used in FOBs. | |
90-93 | Layout code used in FOBs. | |
100-103 | Unused layout code. Only .mbl UI map layouts 100, 101, 102 and 103 remain. | |
500 | Layout code used for the Animal Conservation Platform. | |
900 | Unused layout code. Only the .mbl UI map layout file 900 exists, which is pretty broken. | |
950-953 | Unused layout code with platforms placed strangely close together. Only the .mbl UI map layout files 950, 952 and 953 remain, 951 is missing. | |
971 | Unused layout code with every common platform being identical and a bridge corner missing. Only the .mbl UI map layout file 971 remains. | |
980 | Mentioned in TppLocation, no assets remain. | N/A |
layoutCodes